home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / Warp3D_Devel / Docs / Warp3D.doc < prev    next >
Text File  |  2001-02-08  |  127KB  |  3,716 lines

  1. TABLE OF CONTENTS
  2.  
  3. Warp3D/W3D_AllocStencilBuffer
  4. Warp3D/W3D_AllocTexObj
  5. Warp3D/W3D_AllocZBuffer
  6. Warp3D/W3D_BestModeID
  7. Warp3D/W3D_CheckDriver
  8. Warp3D/W3D_CheckIdle
  9. Warp3D/W3D_ClearDrawRegion
  10. Warp3D/W3D_ClearStencilBuffer
  11. Warp3D/W3D_ClearZBuffer
  12. Warp3D/W3D_CreateContext
  13. Warp3D/W3D_DestroyContext
  14. Warp3D/W3D_DrawLine
  15. Warp3D/W3D_DrawLineLoop
  16. Warp3D/W3D_DrawLineStrip
  17. Warp3D/W3D_DrawPoint
  18. Warp3D/W3D_DrawTriangle
  19. Warp3D/W3D_DrawTriangleV
  20. Warp3D/W3D_DrawTriFan
  21. Warp3D/W3D_DrawTriFanV
  22. Warp3D/W3D_DrawTriStrip
  23. Warp3D/W3D_DrawTriStripV
  24. Warp3D/W3D_FillStencilBuffer
  25. Warp3D/W3D_Flush
  26. Warp3D/W3D_FlushFrame
  27. Warp3D/W3D_FlushTextures
  28. Warp3D/W3D_FreeAllTexObj
  29. Warp3D/W3D_FreeScreenmodeList
  30. Warp3D/W3D_FreeStencilBuffer
  31. Warp3D/W3D_FreeTexObj
  32. Warp3D/W3D_FreeZBuffer
  33. Warp3D/W3D_GetDestFmt
  34. Warp3D/W3D_GetDrivers
  35. Warp3D/W3D_GetDriverState
  36. Warp3D/W3D_GetDriverTexFmtInfo
  37. Warp3D/W3D_GetScreenmodeList
  38. Warp3D/W3D_GetState
  39. Warp3D/W3D_GetTexFmtInfo
  40. Warp3D/W3D_Hint
  41. Warp3D/W3D_LockHardware
  42. Warp3D/W3D_Query
  43. Warp3D/W3D_QueryDriver
  44. Warp3D/W3D_ReadStencilPixel
  45. Warp3D/W3D_ReadStencilSpan
  46. Warp3D/W3D_ReadZPixel
  47. Warp3D/W3D_ReadZSpan
  48. Warp3D/W3D_ReleaseTexture
  49. Warp3D/W3D_RequestMode
  50. Warp3D/W3D_SetAlphaMode
  51. Warp3D/W3D_SetBlendMode
  52. Warp3D/W3D_SetChromaTestBounds
  53. Warp3D/W3D_SetColorMask
  54. Warp3D/W3D_SetCurrentColor
  55. Warp3D/W3D_SetCurrentPen
  56. Warp3D/W3D_SetDrawRegion
  57. Warp3D/W3D_SetDrawRegionWBM
  58. Warp3D/W3D_SetFilter
  59. Warp3D/W3D_SetFogParams
  60. Warp3D/W3D_SetLogicOp
  61. Warp3D/W3D_SetPenMask
  62. Warp3D/W3D_SetScissor
  63. Warp3D/W3D_SetState
  64. Warp3D/W3D_SetStencilFunc
  65. Warp3D/W3D_SetStencilOp
  66. Warp3D/W3D_SetTexEnv
  67. Warp3D/W3D_SetWrapMode
  68. Warp3D/W3D_SetWriteMask
  69. Warp3D/W3D_SetZCompareMode
  70. Warp3D/W3D_TestMode
  71. Warp3D/W3D_UnLockHardware
  72. Warp3D/W3D_UpdateTexImage
  73. Warp3D/W3D_UpdateTexSubImage
  74. Warp3D/W3D_UploadTexture
  75. Warp3D/W3D_WaitIdle
  76. Warp3D/W3D_WriteStencilPixel
  77. Warp3D/W3D_WriteStencilSpan
  78. Warp3D/W3D_WriteZPixel
  79. Warp3D/W3D_WriteZSpan
  80. Warp3D/W3D_AllocStencilBuffer                           Warp3D/W3D_AllocStencilBuffer
  81.  
  82.    NAME   
  83.        W3D_AllocStencilBuffer -- Allocate stencil buffer
  84.  
  85.    SYNOPSIS
  86.        success =  W3D_AllocStencilBuffer(context);
  87.        d0                                a0
  88.  
  89.        ULONG W3D_AllocStencilBuffer(W3D_Context *);
  90.  
  91.    FUNCTION
  92.        Allocate a stencil buffer for the given context. For more
  93.        information on stencil buffering, see the OpenGL specs.
  94.  
  95.    INPUTS
  96.        context - The context the stencil buffer is allocated on
  97.  
  98.    RESULT
  99.        One of the following values:
  100.            W3D_SUCCESS         The allocation was successful
  101.            W3D_NOGFXMEM        No memory was left on the graphics board
  102.            W3D_NOSTENCILBUFFER Stencil buffering is not available
  103.  
  104.    EXAMPLE
  105.  
  106.    NOTES
  107.        Stencil buffering and the ViRGE: The ViRGE is not capable of stencil
  108.        buffering, it became a necessity later when hardware accelerators
  109.        started to support the OpenGL standard.
  110.  
  111.    BUGS
  112.  
  113.    SEE ALSO
  114.        W3D_FreeStencilBuffer
  115.  
  116. Warp3D/W3D_AllocTexObj                                         Warp3D/W3D_AllocTexObj
  117.  
  118.    NAME   
  119.        W3D_AllocTexObj -- Allocate a new texture object
  120.  
  121.    SYNOPSIS
  122.        texture = W3D_AllocTexObj(context, error, ATOTags);
  123.        d0                        a0       a1     a2
  124.  
  125.        W3D_Texture *W3D_AllocTexObj(W3D_Context, ULONG *, struct TagItem *);
  126.  
  127.    FUNCTION
  128.        Create a new texture object. Such a texture object contains
  129.        information about a texture in addition to the normal image data
  130.        that is displayed.
  131.  
  132.    INPUTS
  133.        context - pointer to a W3D_Context
  134.        error   - pointer to a ULONG, which will contain an error code,
  135.                    or NULL if you do not want to get the error code.
  136.        ATOTags - pointer to a taglist. Supported tags are:
  137.                    W3D_ATO_IMAGE (mandatory):
  138.                          A pointer to the source texture image
  139.                    W3D_ATO_FORMAT (mandatory):
  140.                          The texture format of the source texture. Must be
  141.                          one of the following values (check the include file
  142.                          for more precise definition):
  143.                          - W3D_CHUNKY
  144.                          - W3D_A1R5G5B5
  145.                          - W3D_R5G6B5
  146.                          - W3D_R8G8B8
  147.                          - W3D_A4R4G4B4
  148.                          - W3D_A8R8G8B8
  149.                          - W3D_R8G8B8A8
  150.                          - W3D_A8
  151.                          - W3D_L8
  152.                          - W3D_L8A8
  153.                          - W3D_I8
  154.                    W3D_ATO_WIDTH (mandatory):
  155.                          The width of the texture in pixels. Must
  156.                          be 2^n.
  157.                    W3D_ATO_HEIGHT (mandatory):
  158.                          The height of the texture in pixels. Must
  159.                          be 2^n.
  160.                    W3D_ATO_MIPMAP (optional):
  161.                          If specified, the texture can be used for mipmapping.
  162.                          The value of this tag defines, which mipmap levels
  163.                          have to be generated automatically. It should be set
  164.                          so that the generated mipmaps and the provided ones
  165.                          build a complete mipmap set.
  166.                          The value is a bitmask with one specific bit
  167.                          representing a mipmap level. Bit 0 corresponds to
  168.                          level 1, Bit 1 to level 2, so Bit n to level n-1.
  169.                          A value of 0 means, that all mipmaps are provided
  170.                          by the application.
  171.                          Note, that providing only a part of all mipmaps
  172.                          which leave holes between the provided levels may
  173.                          result in performance loss.
  174.                    W3D_ATO_MIPMAPPTRS (mandatory for user-supplied mipmaps)
  175.                          If W3D_ATO_MIPMAP is specified, mipmapping is used
  176.                          for texturing. The mipmap mask specifies which of the
  177.                          mipmaps will be created. With the W3D_ATO_MIPMAPPTRS tag,
  178.                          an array of (void *) to the mipmaps you want to
  179.                          supply yourself is defined. This array must be
  180.                          NULL-Terminated
  181.                          Example: You want to give only level 3 and 5, and
  182.                          let W3D_AllocTexObj create the rest of the mipmaps.
  183.                          Assume a 128x128 texture (7 mipmap levels)
  184.                          Define an array like this:
  185.                            void *mips[3];
  186.                            mips[0] = (void *)level_3_map;
  187.                            mips[1] = (void *)level_5_map;
  188.                            mips[2] = NULL;
  189.                          When calling W3D_AllocTexObj, you would give
  190.                          W3D_ATO_MIPMAP the value 0x6B (binary 1101011)
  191.                          W3D_ATO_MIPMAPPTRS would be mips.
  192.                    W3D_ATO_PALETTE (mandatory for chunky textures):
  193.                          Defines the palette which is necessary to handle
  194.                          chunky textures. A pointer to a palette must be
  195.                          provided. The palette itself is an array of
  196.                          ULONG's, and every ULONG defines the ARGB value
  197.                          for one color index. Therefore the palette must
  198.                          be 1024 bytes. (Note: On 8bit screens, this
  199.                          palette *should* be the screen palette,
  200.                          unless the driver returns TRUE on W3D_Q_PALETTECONV.)
  201.  
  202.    RESULT
  203.        Either a pointer to the successfully created texture
  204.        object, or NULL, in which case the optional error variable
  205.        is set to one of the following values:
  206.            W3D_SUCCESS             It worked!
  207.            W3D_ILLEGALINPUT        Some information was invalid, maybe
  208.                                      a mandatory tag missing
  209.            W3D_NOMEMORY            No memory was available
  210.            W3D_UNSOPPORTEDTEXSIZE  The driver can`t handle a texture
  211.                                      of the given size.
  212.            W3D_NOPALETTE           The texture should be a chunky (CLUT)
  213.                                      texture, but no palette was given.
  214.            W3D_UNSUPPORTEDTEXFMT   The format can not be used with the
  215.                                      current driver
  216.  
  217.    EXAMPLE
  218.        extern W3D_Context *context;
  219.        void *image = LoadImage("texture.iff");
  220.        W3D_Texture *texobj;
  221.        struct TagItem tags[] = {
  222.            W3D_ATO_IMAGE,      image,
  223.            W3D_ATO_FORMAT,     W3D_A1R5G5B5,
  224.            W3D_ATO_WITDH,      128,
  225.            W3D_ATO_HEIGHT,     128,
  226.            TAG_DONE,           0
  227.        };
  228.        ULONG error;
  229.  
  230.        texobj = W3D_AllocTexObj(context, &error, tags);
  231.        if (!texobj)
  232.            printf("An error has occurred because: An error has occurred (%d)\n",
  233.                        error);
  234.  
  235.  
  236.    NOTES
  237.        The pointers to textures and mipmaps passed to this function are
  238.        considered `locked` until this texture object is released again,
  239.        or the image is updated with W3D_UpdateTexImage.
  240.        You may not free the memory.
  241.  
  242.    BUGS
  243.  
  244.    SEE ALSO
  245.        W3D_FreeTexObj, W3D_ReleaseTexture, W3D_UpdateTexImage,
  246.        W3D_FlushTextures, W3D_SetFilter, W3D_SetTexEnv, W3D_SetWrapMode
  247.        W3D_UploadTexture
  248.  
  249. Warp3D/W3D_AllocZBuffer                                       Warp3D/W3D_AllocZBuffer
  250.  
  251.    NAME   
  252.        W3D_AllocZBuffer -- Allocate a ZBuffer
  253.  
  254.    SYNOPSIS
  255.        result = W3D_AllocZBuffer(context);
  256.        d0                        a0
  257.  
  258.        ULONG W3D_AllocZBuffer(W3D_Context *);
  259.  
  260.    FUNCTION
  261.        Allocates a ZBuffer. The size of the ZBuffer depends on the
  262.        size of the bitmap used with this context. The memory is allocated
  263.        on the graphics board.
  264.  
  265.    INPUTS
  266.        context - pointer to the context to be used with the ZBuffer
  267.  
  268.    RESULT
  269.        One of the following values:
  270.            W3D_SUCCESS     The allocation was successful
  271.            W3D_NOGFXMEM    Not enough video memory
  272.            W3D_NOZBUFFER   ZBuffering is not available on this hardware
  273.            W3D_NOTVISIBLE  - The bitmap is not visible/swapped out of vmem
  274.  
  275.    EXAMPLE
  276.        ULONG error, status;
  277.        struct BitMap myBitMap;
  278.        struct TagItem taglist[] = {
  279.            W3D_CC_BITMAP,      (ULONG)&myBitMap,
  280.            W3D_CC_YOFFSET,     0,
  281.            W3D_CC_DRIVERTYPE,  W3D_DRIVER_BEST
  282.        };
  283.        W3D_Context *context;
  284.  
  285.        InitBitMap(&myBitMap, 15, 640, 480);
  286.        createPlanes(&myBitMap);
  287.        context = W3D_CreateContext(&error, taglist);
  288.        status = W3D_AllocZBuffer(context);
  289.  
  290.    NOTES
  291.        This function should be called before textures are uploaded to
  292.        the graphics board, to avoid fragmentation of video memory.
  293.  
  294.    BUGS
  295.  
  296.    SEE ALSO
  297.        W3D_FreeZBuffer
  298.  
  299. Warp3D/W3D_BestModeID                                           Warp3D/W3D_BestModeID
  300.  
  301.    NAME
  302.        W3D_BestModeID -- Find a suitable ModeID (V3)
  303.  
  304.    SYNOPSIS
  305.        ModeID = W3D_BestModeID(tags);
  306.        ModeID = W3D_BestModeIDTags(Tag1, ...);
  307.  
  308.        ULONG W3D_BestModeID(struct TagItem *tags);
  309.        ULONG W3D_BestModeIDTags(Tag tag1, ...);
  310.  
  311.    FUNCTION
  312.        Returns a screen mode ID that best fits the parameters
  313.        supplied in the tag list.
  314.  
  315.    INPUTS
  316.        tags - a taglist, consisting of the following possible tag item:
  317.            W3D_BMI_DRIVER          Must work with this driver
  318.            W3D_BMI_WIDTH           Must have approximately this width
  319.            W3D_BMI_HEIGHT          Must have approximately this height
  320.            W3D_BMI_DEPTH           Must have at least this depth
  321.  
  322.    RESULT
  323.        ModeID - A screenmode ID or INVALID_ID in case of error
  324.  
  325.    EXAMPLE
  326.  
  327.    NOTES
  328.  
  329.    BUGS
  330.  
  331.    SEE ALSO
  332. Warp3D/W3D_CheckDriver                                         Warp3D/W3D_CheckDriver
  333.  
  334.    NAME   
  335.        W3D_CheckDriver -- Check driver availability
  336.  
  337.    SYNOPSIS
  338.        flags = W3D_CheckDriver();
  339.        d0
  340.  
  341.        ULONG W3D_CheckDriver(void);
  342.  
  343.    FUNCTION
  344.        Checks what driver is available (CPU/HW), and returns it
  345.        as a bit mask.
  346.  
  347.    INPUTS
  348.        None
  349.  
  350.    RESULT
  351.        A long word that has it`s bit set accordingly:
  352.            W3D_DRIVER_3DHW - A hardware driver is available
  353.            W3D_DRIVER_CPU  - A software driver is available
  354.  
  355.    EXAMPLE
  356.        ULONG flags = W3D_CheckDriver();
  357.        if (flags & W3D_DRIVER_3DHW) printf("Hardware driver available\n");
  358.        if (flags & W3D_DRIVER_CPU)  printf("Software driver available\n");
  359.  
  360.    NOTES
  361.        This function can be called without a valid context. It can
  362.        be used to evaluate the possibilities the system is offering.
  363.        Note though, that you should give the user a chance to get into
  364.        your program, even if you think it would be too slow without
  365.        hardware acceleration...
  366.  
  367.    BUGS
  368.  
  369.    SEE ALSO
  370.  
  371. Warp3D/W3D_CheckIdle                                             Warp3D/W3D_CheckIdle
  372.  
  373.    NAME   
  374.        W3D_CheckIdle -- check if hardware is working
  375.  
  376.    SYNOPSIS
  377.        working = W3D_CheckIdle(context);
  378.        d0                      a0
  379.  
  380.        ULONG W3D_CheckIdle(W3D_Context *);
  381.  
  382.    FUNCTION
  383.        Check if the hardware is finished with it`s current operation.
  384.  
  385.    INPUTS
  386.        context - a pointer to a W3D_Context
  387.  
  388.    RESULT
  389.        One of to values indicating busy/idle state:
  390.            W3D_SUCCESS - The hardware is idle
  391.            W3D_BUSY    - The hardware is still working
  392.  
  393.    EXAMPLE
  394.  
  395.    NOTES
  396.        This function is not very useful for applications.
  397.  
  398.    BUGS
  399.  
  400.    SEE ALSO
  401.        W3D_WaitIdle
  402.  
  403. Warp3D/W3D_ClearDrawRegion                                 Warp3D/W3D_ClearDrawRegion
  404.  
  405.    NAME   
  406.        W3D_ClearDrawRegion -- Clear the current drawing area
  407.  
  408.    SYNOPSIS
  409.        success = W3D_ClearDrawRegion(context, color);
  410.        d0                            a0       d0
  411.  
  412.        ULONG W3D_ClearDrawRegion(W3D_Context *, ULONG);
  413.  
  414.    FUNCTION
  415.        ClearDrawRegion clears the current drawing area to the color
  416.        given by color. The operation may performed with the boards
  417.        blitter, so this is the prefered way for clearing. Additionally,
  418.        this call makes using V39 multibuffering easier by prociding
  419.        a way to clear the back buffer.
  420.  
  421.    INPUTS
  422.        context - A pointer to the context to use
  423.        color   - The color value to clear to. For direct color drawing
  424.                  regions (i.e. TrueColor/HiColor), this is a 32 bit
  425.                  color value in the form ARGB, with each component 8 bit.
  426.                  For 8 bit (palettized) screens, it's an 8 bit color
  427.                  index. Note that for the first form, the color is
  428.                  always 8 bits per component, regardless of the color
  429.                  format of the drawing region (15/16/24/32 bit).
  430.  
  431.    RESULT
  432.        One of the following:
  433.            W3D_SUCCESS         The operation was successful
  434.            W3D_NOTVISIBLE      The contex was not in locked state
  435.  
  436.    EXAMPLE
  437.  
  438.    NOTES
  439.        W3D_NOTVISIBLE is a bit misleading. The drawing area must not
  440.        be visible on the screen to be clear, but the context must be
  441.        locked, so that the screen buffer is in memory
  442.  
  443.    BUGS
  444.  
  445.    SEE ALSO
  446.  
  447. Warp3D/W3D_ClearStencilBuffer                           Warp3D/W3D_ClearStencilBuffer
  448.  
  449.    NAME   
  450.        W3D_ClearStencilBuffer -- Clear the stencil buffer
  451.  
  452.    SYNOPSIS
  453.        success = W3D_ClearStencilBuffer(context, clearval);
  454.        d0                               a0       a1
  455.  
  456.        ULONG W3D_ClearStencilBuffer(W3D_Context *, ULONG *);
  457.  
  458.    FUNCTION
  459.        Clear the stencil buffer (fill it up) with the value
  460.        pointed to by clearval.
  461.        This function may only be used while the hardware is locked,
  462.        except when indirect drawing is used.
  463.  
  464.    INPUTS
  465.        context  - the context to work on
  466.        clearval - pointer to a value used for clearing
  467.  
  468.    RESULT
  469.        One of the following:
  470.            W3D_SUCCESS         Operation was successful
  471.            W3D_NOSTENCILBUFFER Stencil buffer not present (not allocated,
  472.                                    or not supported by driver)
  473.            W3D_NOTVISIBLE      The stencil buffer can not be accessed by
  474.                                    the hardware
  475.            W3D_QUEUEFAILED     In indirect mode only. Queueing this request
  476.                                    failed
  477.  
  478.    EXAMPLE
  479.  
  480.    NOTES
  481.  
  482.    BUGS
  483.  
  484.    SEE ALSO
  485.        W3D_AllocStencilBuffer, W3D_FreeStencilBuffer
  486.  
  487. Warp3D/W3D_ClearZBuffer                                       Warp3D/W3D_ClearZBuffer
  488.  
  489.    NAME   
  490.        W3D_ClearZBuffer -- Clear the ZBuffer with a given value
  491.  
  492.    SYNOPSIS
  493.        success = W3D_ClearZBuffer(context, clearvalue);
  494.        d0                         a0       a1
  495.  
  496.        ULONG W3D_ClearZBuffer(W3D_Context *, W3D_Double *);
  497.  
  498.    FUNCTION
  499.        Clear the ZBuffer with a given value.
  500.        This function may only be used while the hardware is locked,
  501.        except when indirect drawing is used.
  502.  
  503.    INPUTS
  504.        context     - pointer to the context
  505.        clearvalue  - pointer to a W3D_Double, ranging from [0..1].
  506.                      If NULL, 0.0 is used
  507.  
  508.    RESULT
  509.        One of the following values:
  510.            W3D_SUCCESS     operation successful
  511.            W3D_NOZBUFFER   No ZBuffer was allocated
  512.            W3D_NOTVISIBLE  The ZBuffer was not in video ram
  513.            W3D_QUEUEFAILED     In indirect mode only. Queueing this request
  514.                                    failed
  515.  
  516.    EXAMPLE
  517.  
  518.    NOTES
  519.  
  520.    BUGS
  521.  
  522.    SEE ALSO
  523.        W3D_AllocZBuffer, W3D_FreeZBuffer
  524.  
  525. Warp3D/W3D_CreateContext                                     Warp3D/W3D_CreateContext
  526.  
  527.    NAME   
  528.        W3D_CreateContext -- Create a new Warp3D context
  529.  
  530.    SYNOPSIS
  531.        context = W3D_CreateContext(&error, CCTags);
  532.        D0                          A0      A1
  533.  
  534.        W3D_Context *W3D_CreateContext(ULONG *, struct TagItem *);
  535.  
  536.    FUNCTION
  537.        This function creates a new Warp3D context, which is required by most
  538.        other API functions as first parameter.
  539.  
  540.        The number of open contexts is not limited. Full multitasking capabilities
  541.        are provided.
  542.  
  543.    INPUTS
  544.        error   - A pointer to a ULONG which gets the error value,
  545.                    or NULL if you don`t want an error code returned
  546.        CCTags  - A taglist containing various input parameters:
  547.            W3D_CC_MODEID (special):
  548.                  Specifies the ModeID of the screen you opened or
  549.                  intend to open, or generally the ModeID of the drawing
  550.                  area you intend to use. If you plan to use Warp3D in
  551.                  windowed mode, you may leave this tag unset. Otherwise,
  552.                  the tag MUST be set correctly, as the ModeID is used to
  553.                  extract the required hardware.
  554.            W3D_CC_BITMAP (mandatory):
  555.                  A pointer to the bitmap which is used for 3D drawing.
  556.                  For 3DHW drivers, the bitmap must absolutely be located
  557.                  in video memory (it may be swapped out at the moment).
  558.                  For CPU drivers, it doesn't matter, where the bitmap is
  559.                  located. Note, that CPU drivers might use FAST-RAM
  560.                  buffers for intermediate results to speed up rendering,
  561.                  therefore bitmaps in FAST-RAM might not be optimal in
  562.                  this case.
  563.                  Also note, that never bitmaps should be provided which
  564.                  are directly visible!
  565.            W3D_CC_YOFFSET (mandatory):
  566.                  A vertical offset, which defines, at which Y-Position
  567.                  the drawing area starts. This can be used to achieve
  568.                  multibuffering using the ScrollVPort trick, which might
  569.                  be the only possibility to achieve proper multibuffering
  570.                  with some graphics interface software.
  571.            W3D_CC_DRIVERTYPE (mandatory):
  572.                  A constant which defines what type of driver should
  573.                  be used (use the API function W3D_CheckDriver to get
  574.                  more information about the drivers). Possible values
  575.                  are:
  576.                  - W3D_DRIVER_BEST       the best driver is chosen
  577.                  - W3D_DRIVER_3DHW       the hardware driver is chosen,
  578.                                             if none is present, NULL is
  579.                                             returned
  580.                  - W3D_DRIVER_CPU        the software driver is chosen,
  581.                                             if none is present, NULL is
  582.                                             returned
  583.            W3D_CC_W3DBM (optional):
  584.                  Boolean tag. If this is set to TRUE, the W3D_CC_BITMAP
  585.                  tag doesn't point to a struct BitMap. Instead, it points
  586.                  to a Warp3D bitmap (of type W3D_Bitmap), which might
  587.                  be in fast-ram (for CPU rendering). Note that the
  588.                  W3D_CC_YOFFSET tag is ignored if W3D_CC_W3DBM is set
  589.                  to TRUE.
  590.            W3D_CC_INDIRECT (optional):
  591.                  Boolean tag. If set to TRUE, then all drawing actions are
  592.                  possibly not performed directly, but are queued until
  593.                  the buffer is full, or W3D_Flush is called, or the
  594.                  indirect state is switched off with W3D_SetState
  595.            W3D_CC_GLOBALTEXENV (optional):
  596.                  Boolean tag. If set to TRUE, calls to SetTexEnv do not
  597.                  modify the given texture, but are used for all textures.
  598.            W3D_CC_DOUBLEHEIGHT (optional):
  599.                  Boolean tag. This tag should be set to TRUE if the drawing
  600.                  area is a double height screen. Double height screens
  601.                  may be used for double buffering with CyberGraphX.
  602.            W3D_CC_FAST: (optional):
  603.                  Boolean tag. If set to TRUE, drawing functions are allowed
  604.                  to modify the passed structures.
  605.  
  606.  
  607.    RESULT
  608.        A pointer to a newly created context structure, or NULL for failure.
  609.        If an error variable was provided, the error value is filled in.
  610.        It may be one of the following values:
  611.            W3D_SUCCESS         - Operation was successful
  612.            W3D_ILLEGALINPUT    - Illegal input, maybe a left out tag item
  613.            W3D_NOMEMORY        - Unable to get enough memory
  614.            W3D_NODRIVER        - No driver was available
  615.            W3D_UNSUPPORTEDFMT  - The supplied bitmap can`t be supported
  616.            W3D_ILLEGALBITMAP   - The bitmap is not properly initialised
  617.  
  618.    EXAMPLE
  619.        ULONG error;
  620.        struct BitMap myBitMap;
  621.        struct TagItem taglist[] = {
  622.            W3D_CC_BITMAP,      (ULONG)&myBitMap,
  623.            W3D_CC_YOFFSET,     0,
  624.            W3D_CC_DRIVERTYPE,  W3D_DRIVER_BEST
  625.        };
  626.        W3D_Context *context;
  627.  
  628.        InitBitMap(&myBitMap, 15, 640, 480);
  629.        createPlanes(&myBitMap);
  630.        context = W3D_CreateContext(&error, taglist);
  631.  
  632.    NOTES
  633.        An error of type W3D_UNSUPPORTEDFMT is returned if a W3D_Bitmap
  634.        is given as drawregion and no CPU driver is available, or
  635.        a HW driver is also requested.
  636.  
  637.    BUGS
  638.  
  639.    SEE ALSO
  640.        W3D_DestroyContext, W3D_Flush, W3D_SetState
  641.  
  642. Warp3D/W3D_DestroyContext                                   Warp3D/W3D_DestroyContext
  643.  
  644.    NAME   
  645.        W3D_DestoryContext -- Release a Warp3D context
  646.  
  647.    SYNOPSIS
  648.        W3D_DestoryContext(context);
  649.                           A0
  650.  
  651.        void W3D_DestroyContext(W3D_Context *);
  652.  
  653.    FUNCTION
  654.        This function frees up all resources for the given context,
  655.        destroying it.
  656.  
  657.    INPUTS
  658.        context - Pointer to a Warp3D context
  659.  
  660.    RESULT
  661.        None
  662.  
  663.    EXAMPLE
  664.        W3D_Context *context;
  665.        ...
  666.        context = W3D_CreateContext(.....);
  667.        ...
  668.        W3D_DestroyContext(context);
  669.  
  670.    NOTES
  671.        Always release contexts. Even if the memory loss doesn't kill you,
  672.        the hardware may be blocked.
  673.  
  674.    BUGS
  675.  
  676.    SEE ALSO
  677.        W3D_CreateContext
  678.  
  679. Warp3D/W3D_DrawLine                                               Warp3D/W3D_DrawLine
  680.  
  681.    NAME   
  682.        W3D_DrawLine -- Draw a three-dimensional line
  683.  
  684.    SYNOPSIS
  685.        success = W3D_DrawLine(context, line);
  686.        d0                     a0       a1
  687.  
  688.        ULONG W3D_DrawLine(W3D_Context *, W3D_Line *);
  689.  
  690.    FUNCTION
  691.        This function draws a line based on the current state.
  692.        It may only be used while the hardware is locked, except when
  693.        indirect drawing is used.
  694.  
  695.    INPUTS
  696.        context - The context to be drawn in
  697.        line    - Definition of a line.
  698.  
  699.    RESULT
  700.        A value inidcating success or failure. One of the following:
  701.            W3D_SUCCESS         (you guessed it!)
  702.            W3D_NOTEXTURE       The line has no texture
  703.            W3D_TEXNOTRESIDENT  The required texture is not in video ram
  704.            W3D_NOGFXMEM        No memory available on the graphics card
  705.            W3D_NOTVISIBLE      The drawing area is not visible
  706.            W3D_NOZBUFFER       No ZBuffer
  707.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  708.  
  709.    EXAMPLE
  710.  
  711.    NOTES
  712.        The linewidth parameter will probably not be supported
  713.        by most 3D hardware.
  714.  
  715.    BUGS
  716.  
  717.    SEE ALSO
  718.  
  719. Warp3D/W3D_DrawLineLoop                                       Warp3D/W3D_DrawLineLoop
  720.  
  721.    NAME
  722.        W3D_DrawLineLoop -- Draw a closed sequence of connected lines (V2)
  723.  
  724.    SYNOPSIS
  725.        success = W3D_DrawLineLoop(context, lines);
  726.        d0                          a0       a1
  727.  
  728.        ULONG W3D_DrawLineLoop(W3D_Context *, W3D_Lines *);
  729.  
  730.    FUNCTION
  731.        This function draws a connected sequence of lines, similar to
  732.        the W3D_DrawLineStrip function. The only difference is that the
  733.        last vertex is connected to the first with a line segment, too,
  734.        meaning that the vertexcount lines are drawn.
  735.  
  736.    INPUTS
  737.        context     - pointer to the context.
  738.        lines       - pointer to the W3D_Lines (not the trailing 's')
  739.                      structure defining the line strip.
  740.  
  741.    RESULT
  742.        One of the following:
  743.            W3D_SUCCESS         It worked.
  744.            W3D_NOTEXTURE       No texture given
  745.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  746.            W3D_NOTVISIBLE      The drawing area is not visible
  747.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  748.            W3D_ILLEGALINPUT    Fewer than two vertices were given
  749.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  750.  
  751.    EXAMPLE
  752.  
  753.    NOTES
  754.  
  755.    BUGS
  756.        Currently, this call is not queued.
  757.  
  758.    SEE ALSO
  759.        W3D_DrawLineLoop, W3D_DrawLine
  760.  
  761. Warp3D/W3D_DrawLineStrip                                     Warp3D/W3D_DrawLineStrip
  762.  
  763.    NAME
  764.        W3D_DrawLineStrip -- Draw a sequence of connected lines (V2)
  765.  
  766.    SYNOPSIS
  767.        success = W3D_DrawLineStrip(context, lines);
  768.        d0                          a0       a1
  769.  
  770.        ULONG W3D_DrawLineStrip(W3D_Context *, W3D_Lines *);
  771.  
  772.    FUNCTION
  773.        Draws a sequence of connected lines (a line strip). The first
  774.        line is defined by vertices 0 and 1, the second line by vertices
  775.        1 and 2, ..., up to the last line being defined by vertices
  776.        n-1 and n, with n being the vertexcount field from the W3D_Lines
  777.        structure.
  778.  
  779.    INPUTS
  780.        context     - pointer to the context.
  781.        lines       - pointer to the W3D_Lines (not the trailing 's')
  782.                      structure defining the line strip.
  783.  
  784.    RESULT
  785.        One of the following:
  786.            W3D_SUCCESS         It worked.
  787.            W3D_NOTEXTURE       No texture given
  788.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  789.            W3D_NOTVISIBLE      The drawing area is not visible
  790.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  791.            W3D_ILLEGALINPUT    Fewer than two vertices were given
  792.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  793.  
  794.    EXAMPLE
  795.  
  796.    NOTES
  797.  
  798.    BUGS
  799.        Currently, this call is not queued.
  800.  
  801.    SEE ALSO
  802.        W3D_DrawLineLoop, W3D_DrawLine
  803.  
  804. Warp3D/W3D_DrawPoint                                             Warp3D/W3D_DrawPoint
  805.  
  806.    NAME   
  807.        W3D_DrawPoint -- Draw a point
  808.  
  809.    SYNOPSIS
  810.        success = W3D_DrawPoint(context, point);
  811.        d0                      a0       a1
  812.  
  813.        ULONG W3D_DrawPoint(W3D_Context *, W3D_Point *);
  814.  
  815.    FUNCTION
  816.        Draw a point based on the current context
  817.        It may only be used while the hardware is locked, except when
  818.        indirect drawing is used.
  819.  
  820.    INPUTS
  821.        context - a pointer to the context to draw with
  822.        point   - a pointer to a filled W3D_Point
  823.  
  824.    RESULT
  825.        One of the following:
  826.            W3D_SUCCESS         It worked.
  827.            W3D_NOTEXTURE       No texture given
  828.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  829.            W3D_NOTVISIBLE      The drawing area is not visible
  830.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  831.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  832.  
  833.    EXAMPLE
  834.  
  835.    NOTES
  836.        The pointsize parameter will probably not be supported by most
  837.        3D hardware.
  838.  
  839.        Although the vertex has it's own color, the GOURAUD shading state
  840.        must be enabled to use this color, otherwise the current color set
  841.        by W3D_SetCurrentColor/W3D_SetCurrentPen will be used.
  842.  
  843.    BUGS
  844.  
  845.    SEE ALSO
  846.  
  847. Warp3D/W3D_DrawTriangle                                       Warp3D/W3D_DrawTriangle
  848.  
  849.    NAME   
  850.        W3D_DrawTriangle -- Draw a triangle
  851.  
  852.    SYNOPSIS
  853.        success = W3D_DrawTriangle(context, triangle);
  854.        d0                         a0       a1
  855.  
  856.        ULONG W3D_DrawTriangle(W3D_Context *, W3D_Triangle *);
  857.  
  858.    FUNCTION
  859.        Draw a triangle to the given context, based on that context`s
  860.        state.
  861.        It may only be used while the hardware is locked, except when
  862.        indirect drawing is used.
  863.  
  864.    INPUTS
  865.        context     - the context to be drawn to
  866.        triangle    - the triangle to be drawn
  867.  
  868.    RESULT
  869.        One of the following:
  870.            W3D_SUCCESS         It worked.
  871.            W3D_NOTEXTURE       No texture given
  872.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  873.            W3D_NOTVISIBLE      The drawing area is not visible
  874.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  875.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  876.  
  877.    EXAMPLE
  878.  
  879.    NOTES
  880.  
  881.    BUGS
  882.  
  883.    SEE ALSO
  884.        W3D_DrawTriFan, W3D_DrawTriStrip
  885.  
  886. Warp3D/W3D_DrawTriangleV                                     Warp3D/W3D_DrawTriangleV
  887.  
  888.    NAME
  889.        W3D_DrawTriangleV -- Draw a triangle
  890.  
  891.    SYNOPSIS
  892.        success = W3D_DrawTriangleV(context, triangle);
  893.        d0                         a0       a1
  894.  
  895.        ULONG W3D_DrawTriangleV(W3D_Context *, W3D_TriangleV *);
  896.  
  897.    FUNCTION
  898.        Draw a triangle to the given context, based on that context`s
  899.        state.
  900.        It may only be used while the hardware is locked.
  901.        Indirect drawing is not supported by this call.
  902.        This is the "vectorized" version; instead of inlined vertex
  903.        structures, it uses pointers.
  904.  
  905.    INPUTS
  906.        context     - the context to be drawn to
  907.        triangle    - the triangle to be drawn
  908.  
  909.    RESULT
  910.        One of the following:
  911.            W3D_SUCCESS         It worked.
  912.            W3D_NOTEXTURE       No texture given
  913.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  914.            W3D_NOTVISIBLE      The drawing area is not visible
  915.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  916.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  917.  
  918.    EXAMPLE
  919.  
  920.    NOTES
  921.        Requires Warp3D V3
  922.  
  923.    BUGS
  924.  
  925.    SEE ALSO
  926.        W3D_DrawTriFanV, W3D_DrawTriStripV
  927.  
  928. Warp3D/W3D_DrawTriFan                                           Warp3D/W3D_DrawTriFan
  929.  
  930.    NAME   
  931.        W3D_DrawTriFan -- Draw a triangle fan
  932.  
  933.    SYNOPSIS
  934.        success = W3D_DrawTriFan(context, triangles);
  935.        d0                       a0       a1
  936.  
  937.        ULONG W3D_DrawTriFan(W3D_Context *, W3D_Triangles *);
  938.  
  939.    FUNCTION
  940.        Draw a triangle fan. The first vertex in the list is
  941.        considered the common point for the fan. For more
  942.        information on triangle fans, see the OpenGL specs.
  943.        This function may only be used while the hardware is locked,
  944.        except when indirect drawing is used.
  945.  
  946.    INPUTS
  947.        context     - pointer to the context.
  948.        triangles   - pointer to a vertex list. Note that this
  949.                      is a W3D_Triangles (trailing s, avoid mixing
  950.                      up with W3D_Traingle)
  951.  
  952.    RESULT
  953.        One of the following:
  954.            W3D_SUCCESS         It worked.
  955.            W3D_NOTEXTURE       No texture given
  956.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  957.            W3D_NOTVISIBLE      The drawing area is not visible
  958.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  959.            W3D_ILLEGALINPUT    Less than three vertices were given
  960.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  961.  
  962.    EXAMPLE
  963.  
  964.    NOTES
  965.  
  966.    BUGS
  967.  
  968.    SEE ALSO
  969.        W3D_DrawTriangle, W3D_DrawTriStrip
  970.  
  971. Warp3D/W3D_DrawTriFanV                                         Warp3D/W3D_DrawTriFanV
  972.  
  973.    NAME
  974.        W3D_DrawTriFanV -- Draw a triangle fan
  975.  
  976.    SYNOPSIS
  977.        success = W3D_DrawTriFanV(context, triangles);
  978.        d0                       a0       a1
  979.  
  980.        ULONG W3D_DrawTriFanV(W3D_Context *, W3D_TrianglesV *);
  981.  
  982.    FUNCTION
  983.        Draw a triangle fan. The first vertex in the list is
  984.        considered the common point for the fan. For more
  985.        information on triangle fans, see the OpenGL specs.
  986.        This function may only be used while the hardware is locked.
  987.        Indirect drawing is not supported by this call.
  988.        This is the "vectorized" version. Instead of suplying a
  989.        pointer to an array of vertex structure, you supply a pointer
  990.        to an array of vertex structure pointers.
  991.  
  992.    INPUTS
  993.        context     - pointer to the context.
  994.        triangles   - pointer to a vertex list. Note that this
  995.                      is a W3D_TrianglesV (trailing s, avoid mixing
  996.                      up with W3D_TraingleV)
  997.  
  998.    RESULT
  999.        One of the following:
  1000.            W3D_SUCCESS         It worked.
  1001.            W3D_NOTEXTURE       No texture given
  1002.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  1003.            W3D_NOTVISIBLE      The drawing area is not visible
  1004.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  1005.            W3D_ILLEGALINPUT    Less than three vertices were given
  1006.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  1007.            W3D_NOMEMORY        The feature should have been emulated since the
  1008.                                driver does not support it, but memory alloc failed.
  1009.  
  1010.    EXAMPLE
  1011.  
  1012.    NOTES
  1013.        Requires Warp3D V3
  1014.  
  1015.    BUGS
  1016.  
  1017.    SEE ALSO
  1018.        W3D_DrawTriangleV, W3D_DrawTriStripV
  1019.  
  1020. Warp3D/W3D_DrawTriStrip                                       Warp3D/W3D_DrawTriStrip
  1021.  
  1022.    NAME
  1023.        W3D_DrawTriStrip -- Draw a triangle strip
  1024.  
  1025.    SYNOPSIS
  1026.        success = W3D_DrawTriStrip(context, triangles);
  1027.        d0                       a0       a1
  1028.  
  1029.        ULONG W3D_DrawTriStrip(W3D_Context *, W3D_Triangles *);
  1030.  
  1031.    FUNCTION
  1032.        Draw a triangle strip. For more information
  1033.        on triangle strips, see the OpenGL specs.
  1034.        This function may only be used while the hardware is locked,
  1035.        except when indirect drawing is used.
  1036.  
  1037.    INPUTS
  1038.        context     - pointer to the context.
  1039.        triangles   - pointer to a vertex list. Note that this
  1040.                      is a W3D_Triangles (trailing s, avoid mixing
  1041.                      up with W3D_Traingle)
  1042.  
  1043.    RESULT
  1044.        One of the following:
  1045.            W3D_SUCCESS         It worked.
  1046.            W3D_NOTEXTURE       No texture given
  1047.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  1048.            W3D_NOTVISIBLE      The drawing area is not visible
  1049.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  1050.            W3D_ILLEGALINPUT    Less than three vertices were given
  1051.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  1052.  
  1053.    EXAMPLE
  1054.  
  1055.    NOTES
  1056.  
  1057.    BUGS
  1058.  
  1059.    SEE ALSO
  1060.        W3D_DrawTriangle, W3D_DrawTriFan
  1061.  
  1062. Warp3D/W3D_DrawTriStripV                                     Warp3D/W3D_DrawTriStripV
  1063.  
  1064.    NAME
  1065.        W3D_DrawTriStripV -- Draw a triangle strip
  1066.  
  1067.    SYNOPSIS
  1068.        success = W3D_DrawTriStripV(context, triangles);
  1069.        d0                       a0       a1
  1070.  
  1071.        ULONG W3D_DrawTriStripV(W3D_Context *, W3D_TrianglesV *);
  1072.  
  1073.    FUNCTION
  1074.        Draw a triangle strip. For more information
  1075.        on triangle strips, see the OpenGL specs.
  1076.        This function may only be used while the hardware is locked.
  1077.        Indirect drawing is not supported for this function.
  1078.        This is the "vectorized" version. Instead of suplying a
  1079.        pointer to an array of vertex structure, you supply a pointer
  1080.        to an array of vertex structure pointers.
  1081.  
  1082.    INPUTS
  1083.        context     - pointer to the context.
  1084.        triangles   - pointer to a vertex list. Note that this
  1085.                      is a W3D_Triangles (trailing s, avoid mixing
  1086.                      up with W3D_Traingle)
  1087.  
  1088.    RESULT
  1089.        One of the following:
  1090.            W3D_SUCCESS         It worked.
  1091.            W3D_NOTEXTURE       No texture given
  1092.            W3D_TEXNOTRESIDENT  The texture is not on the graphics board`s memory
  1093.            W3D_NOTVISIBLE      The drawing area is not visible
  1094.            W3D_NOZBUFFER       No ZBuffer present, although it has been requested
  1095.            W3D_ILLEGALINPUT    Less than three vertices were given
  1096.            W3D_QUEUEFAILED     The request can't be queued in indirect mode
  1097.  
  1098.    EXAMPLE
  1099.  
  1100.    NOTES
  1101.  
  1102.    BUGS
  1103.  
  1104.    SEE ALSO
  1105.        W3D_DrawTriangle, W3D_DrawTriFan
  1106.  
  1107. Warp3D/W3D_FillStencilBuffer                             Warp3D/W3D_FillStencilBuffer
  1108.  
  1109.    NAME   
  1110.        W3D_FillStencilBuffer -- Fill the stencil buffer
  1111.  
  1112.    SYNOPSIS
  1113.        success = W3D_FillStencilBuffer(context, x, y, width, height, depth, data);
  1114.        d0                              a0       d0 d1 d2     d3      d4     a1
  1115.  
  1116.        ULONG W3D_FillStencilBuffer(W3D_Context *, ULONG, ULONG, ULONG, ULONG,
  1117.                            ULONG, void *);
  1118.  
  1119.    FUNCTION
  1120.        This function fills the stencil buffer with a rectangular image
  1121.        with the given dimensions.
  1122.        This function may only be used while the hardware is locked,
  1123.        except when indirect drawing is used.
  1124.  
  1125.    INPUTS
  1126.        context - the context
  1127.        x,y     - Coordinates into the stencil buffer
  1128.        width   - Width of the image data
  1129.        height  - Height of the image data
  1130.        depth   - Depth of the image data. Must be 8,16 or 32
  1131.        data    - The data itself
  1132.  
  1133.    RESULT
  1134.        One of the following values:
  1135.            W3D_SUCCESS             Operation successful
  1136.            W3D_NOSTENCILBUFFER     No stencil buffer present (either it`s not
  1137.                                        allocated, or not supported)
  1138.            W3D_ILLEGALINPUT        Illegal depth value
  1139.            W3D_NOTVISIBLE          The stencil buffer can not be accessed by
  1140.                                        the hardware
  1141.  
  1142.    EXAMPLE
  1143.  
  1144.    NOTES
  1145.  
  1146.    BUGS
  1147.  
  1148.    SEE ALSO
  1149.        W3D_CreateStencilBuffer, W3D_ClearStencilBuffer
  1150.  
  1151. Warp3D/W3D_Flush                                                     Warp3D/W3D_Flush
  1152.  
  1153.    NAME   
  1154.        W3D_Flush -- Flush indirect drawing queue
  1155.  
  1156.    SYNOPSIS
  1157.        result = W3D_Flush(context);
  1158.                  a0
  1159.  
  1160.        ULONG W3D_Flush(W3D_Context *);
  1161.  
  1162.    FUNCTION
  1163.        If the given context is not in indirect mode, nothing happens.
  1164.        Otherwise, the internal queue is flushed and all buffered drawing
  1165.        request are drawn.
  1166.  
  1167.    INPUTS
  1168.        context - the context which should be flushed
  1169.  
  1170.    RESULT
  1171.        A value indicating error or success:
  1172.            W3D_SUCCESS     success
  1173.            W3D_NOTVISIBLE  Locking the hardware was unsuccesful
  1174.  
  1175.    EXAMPLE
  1176.  
  1177.    NOTES
  1178.  
  1179.    BUGS
  1180.  
  1181.    SEE ALSO
  1182.        W3D_SetState, W3D_CreateContext, W3D_LockHardware, W3D_UnLockHardware
  1183.  
  1184. Warp3D/W3D_FlushFrame                                           Warp3D/W3D_FlushFrame
  1185.  
  1186.    NAME
  1187.        W3D_FlushFrame -- Flush the current frame
  1188.  
  1189.    SYNOPSIS
  1190.        W3D_FlushFrame(context);
  1191.                          a0
  1192.  
  1193.        void W3D_FlushFrame(W3D_Context*);
  1194.  
  1195.    FUNCTION
  1196.        This function flushes the current frame. It must be called at the end
  1197.        of your drawing when the frame is finished. This function *must* be
  1198.        called by any application, even if you do not "intent" to support
  1199.        CPU drivers (for which this function is mainly designed).
  1200.  
  1201.    INPUTS
  1202.        context -   The context to flush
  1203.  
  1204.    RESULT
  1205.  
  1206.    EXAMPLE
  1207.  
  1208.    NOTES
  1209.        If the context is indirect, this function also flushes the
  1210.        Queue.
  1211.  
  1212.    BUGS
  1213.  
  1214.    SEE ALSO
  1215.  
  1216. Warp3D/W3D_FlushTextures                                     Warp3D/W3D_FlushTextures
  1217.  
  1218.    NAME   
  1219.        W3D_FlushTextures -- Release all textures from video ram
  1220.  
  1221.    SYNOPSIS
  1222.        W3D_FlushTextures(context);
  1223.                          a0
  1224.  
  1225.        void W3D_FlushTextures(W3D_Context);
  1226.  
  1227.    FUNCTION
  1228.        This function releases every texture that`s currently
  1229.        on the graphics board`s texture memory.
  1230.  
  1231.    INPUTS
  1232.        context - Pointer to a W3D_Context
  1233.  
  1234.    RESULT
  1235.        None
  1236.  
  1237.    EXAMPLE
  1238.  
  1239.    NOTES
  1240.  
  1241.    BUGS
  1242.  
  1243.    SEE ALSO
  1244.        W3D_ReleaseTexture
  1245.  
  1246. Warp3D/W3D_FreeAllTexObj                                     Warp3D/W3D_FreeAllTexObj
  1247.  
  1248.    NAME   
  1249.        W3D_FreeAllTexObj -- Free all textures in context
  1250.  
  1251.    SYNOPSIS
  1252.        W3D_FreeAllTexObj(context);
  1253.                          a0
  1254.  
  1255.        void W3D_FreeTexObj(W3D_Context *);
  1256.  
  1257.    FUNCTION
  1258.        Free all texture objects allocated in the current context.
  1259.  
  1260.    INPUTS
  1261.        context - the pointer to the context
  1262.  
  1263.    RESULT
  1264.  
  1265.    EXAMPLE
  1266.  
  1267.    NOTES
  1268.  
  1269.    BUGS
  1270.  
  1271.    SEE ALSO
  1272.        W3D_FreeTexObj, W3D_AllocTexObj
  1273.  
  1274. Warp3D/W3D_FreeScreenmodeList                           Warp3D/W3D_FreeScreenmodeList
  1275.  
  1276.    NAME
  1277.        W3D_FreeScreenmodeList - Free the list of screen modes (V3)
  1278.  
  1279.    SYNOPSIS
  1280.        void W3D_FreeScreenmodeList(W3D_ScreenMode *);
  1281.  
  1282.        W3D_FreeScreenmodeList(list);
  1283.  
  1284.    FUNCTION
  1285.        Frees all resources that are attached to the Screen Mode list
  1286.        which must have been allocated with W3D_GetScreenmodeList.
  1287.  
  1288.    INPUTS
  1289.        list - the list pointer obtained by W3D_GetScreenmodeList
  1290.  
  1291.    RESULT
  1292.  
  1293.    EXAMPLE
  1294.  
  1295.    NOTES
  1296.  
  1297.    BUGS
  1298.  
  1299.    SEE ALSO
  1300.        W3D_GetScreenmodeList
  1301. Warp3D/W3D_FreeStencilBuffer                             Warp3D/W3D_FreeStencilBuffer
  1302.  
  1303.    NAME   
  1304.        W3D_FreeStencilBuffer -- Free the stencil buffer
  1305.  
  1306.    SYNOPSIS
  1307.        success = W3D_FreeStencilBuffer(context);
  1308.        d0                              a0
  1309.  
  1310.        ULONG W3D_FreeStencilBuffer(W3D_Context *);
  1311.  
  1312.    FUNCTION
  1313.        Free up all memory associated with the stencil buffer.
  1314.  
  1315.    INPUTS
  1316.        context - the context containing the stencil buffer to be freed
  1317.  
  1318.    RESULT
  1319.        One of the following values:
  1320.            W3D_SUCCESS             Operation succesful
  1321.            W3D_NOSTENCILBUFFER     No stencil buffer was allocated, or stencil
  1322.                                        buffering is not supported by the current
  1323.                                        hardware driver.
  1324.            W3D_NOTVISIBLE          The stencil buffer can not be accessed by
  1325.                                        the hardware
  1326.  
  1327.    EXAMPLE
  1328.  
  1329.    NOTES
  1330.  
  1331.    BUGS
  1332.  
  1333.    SEE ALSO
  1334.        W3D_CreateStencilBuffer
  1335.  
  1336. Warp3D/W3D_FreeTexObj                                           Warp3D/W3D_FreeTexObj
  1337.  
  1338.    NAME   
  1339.        W3D_FreeTexObj -- Free a texture object
  1340.  
  1341.    SYNOPSIS
  1342.        W3D_FreeTexObj(context, texture);
  1343.                       a0       a1
  1344.  
  1345.        void W3D_FreeTexObj(W3D_Context *, W3D_Texture *);
  1346.  
  1347.    FUNCTION
  1348.        Remove the texture object from the list of textures
  1349.        and free up all resources associated with it.
  1350.  
  1351.    INPUTS
  1352.        context - Pointer to a W3D_Context
  1353.        texture - Pointer to a texture to be released
  1354.  
  1355.    RESULT
  1356.        None
  1357.  
  1358.    EXAMPLE
  1359.        extern W3D_Context *context;
  1360.        void *image = LoadImage("texture.iff");
  1361.        W3D_Texture *texobj;
  1362.        struct TagItem tags[] = {
  1363.            W3D_ATO_IMAGE,      image,
  1364.            W3D_ATO_FORMAT,     W3D_A1R5G5B5,
  1365.            W3D_ATO_WITDH,      128,
  1366.            W3D_ATO_HEIGHT,     128,
  1367.            TAG_DONE,           0
  1368.        };
  1369.        ULONG error;
  1370.  
  1371.        texobj = W3D_AllocTexObj(context, &error, tags);
  1372.        if (!texobj) {
  1373.            printf("An error has occurred because: An error has occurred (%d)\n",
  1374.                        error);
  1375.        } else {
  1376.            ... Draw some cool stuff ...
  1377.            W3D_FreeTexObj(context, texobj);
  1378.  
  1379.  
  1380.    NOTES
  1381.        Free all textures. Even if you can afford the memory loss in main memory,
  1382.        you`ll loose video memory.
  1383.        The `locked` pointers (those to the image and user-defined mipmaps)
  1384.        are now `unlocked`, and may be used again.
  1385.  
  1386.    BUGS
  1387.  
  1388.    SEE ALSO
  1389.        W3D_AllocTexObj
  1390.  
  1391. Warp3D/W3D_FreeZBuffer                                         Warp3D/W3D_FreeZBuffer
  1392.  
  1393.    NAME   
  1394.        W3D_FreeZBuffer -- Free ZBuffer
  1395.  
  1396.    SYNOPSIS
  1397.        success = W3D_FreeZBuffer(context);
  1398.        d0                        a0
  1399.  
  1400.        ULONG W3D_FreeZBuffer(W3D_Context *);
  1401.  
  1402.    FUNCTION
  1403.        Free the ZBuffer previously allocated with W3D_AllocZBuffer
  1404.  
  1405.    INPUTS
  1406.        context - Pointer to a W3D_Context
  1407.  
  1408.    RESULT
  1409.        One of the following values:
  1410.            W3D_SUCCESS     Success
  1411.            W3D_NOZBUFFER   No Z Buffer was allocated
  1412.            W3D_NOTVISIBLE  ZBuffer is not visible
  1413.  
  1414.    EXAMPLE
  1415.  
  1416.    NOTES
  1417.  
  1418.    BUGS
  1419.  
  1420.    SEE ALSO
  1421.        W3D_AllocZBuffer
  1422.  
  1423. Warp3D/W3D_GetDestFmt                                           Warp3D/W3D_GetDestFmt
  1424.  
  1425.    NAME   
  1426.        W3D_GetDestFmt -- Get information about supported formats
  1427.  
  1428.    SYNOPSIS
  1429.        format = W3D_GetDestFmt();
  1430.        d0
  1431.  
  1432.        ULONG W3D_GetDestFmt(void);
  1433.  
  1434.    FUNCTION
  1435.        *DEPRECATED* DO NOT USE THIS IN NEW PROJECTS
  1436.        This function can be used to get information about the destination
  1437.        (i.e. screen) format supported by the current driver. The result
  1438.        is a bitmask, with each bit representing a supported format.
  1439.        This function can be used before opening a display, to ensure
  1440.        that only a supported display area is selected.
  1441.  
  1442.    INPUTS
  1443.        None
  1444.  
  1445.    RESULT
  1446.        A bitmask representing supported modes. Currently, some of the
  1447.        following bits:
  1448.            W3D_FMT_CLUT
  1449.            W3D_FMT_R5G5B5
  1450.            W3D_FMT_B5G5R5
  1451.            W3D_FMT_R5G5B5PC
  1452.            W3D_FMT_B5G5R5PC
  1453.            W3D_FMT_R5G6B5
  1454.            W3D_FMT_B5G6R5
  1455.            W3D_FMT_R5G6B5PC
  1456.            W3D_FMT_B5G6R5PC
  1457.            W3D_FMT_R8G8B8
  1458.            W3D_FMT_B8G8R8
  1459.            W3D_FMT_A8R8G8B8
  1460.            W3D_FMT_A8B8G8R8
  1461.            W3D_FMT_R8G8B8A8
  1462.            W3D_FMT_B8G8R8A8
  1463.  
  1464.    EXAMPLE
  1465.        ULONG fmt = W3D_GetDestFmt();
  1466.  
  1467.        if (fmt & W3D_FMT_CLUT)     printf("Driver supports 8 bit modes\n");
  1468.        if (fmt & W3D_R5G5B5)       printf("Driver supports 15 bit RGB modes\n");
  1469.  
  1470.    NOTES
  1471.        This function is deprecated and should not be used in future
  1472.        projects.
  1473.  
  1474.    BUGS
  1475.  
  1476.    SEE ALSO
  1477.        W3D_CreateContext, W3D_Query, W3D_GetDrivers
  1478.  
  1479. Warp3D/W3D_GetDrivers                                           Warp3D/W3D_GetDrivers
  1480.  
  1481.    NAME
  1482.        W3D_GetDrivers -- Get the internal list of drivers (V2)
  1483.  
  1484.    SYNOPSIS
  1485.        driverarray = W3D_GetDrivers();
  1486.           D0
  1487.  
  1488.        W3D_Driver **W3D_GetDrivers(void);
  1489.  
  1490.    FUNCTION
  1491.        This function returns a (NULL-Terminated) Array of pointers
  1492.        to W3D_Driver structures. You can use these to find a suitable
  1493.        driver, offer the user a selection of hardware, or activate
  1494.        one driver for further queries.
  1495.  
  1496.    INPUTS
  1497.  
  1498.    RESULT
  1499.        driverarray -   A null-terminated array of pointers to
  1500.                        W3D_Driver structures.
  1501.  
  1502.    EXAMPLE
  1503.  
  1504.    NOTES
  1505.        The returned list is STRICTLY read-only.
  1506.  
  1507.    BUGS
  1508.  
  1509.    SEE ALSO
  1510.        W3D_TestMode
  1511.  
  1512. Warp3D/W3D_GetDriverState                                   Warp3D/W3D_GetDriverState
  1513.  
  1514.    NAME   
  1515.        W3D_GetDriverState -- get current state of driver
  1516.  
  1517.    SYNOPSIS
  1518.        result = W3D_GetDriverState(context);
  1519.        d0                          a0
  1520.  
  1521.        ULONG W3D_GetDriverState(W3D_Context *);
  1522.  
  1523.    FUNCTION
  1524.        Return information about the current state of the driver.
  1525.        This function can be used to check if the current driver
  1526.        is able to start rendering now.
  1527.  
  1528.    INPUTS
  1529.        context - The context to check the state for
  1530.  
  1531.    RESULT
  1532.        One of the following values:
  1533.            W3D_SUCCESS         Success, rendering possible
  1534.            W3D_NOTVISIBLE      Drawing area is not currently on
  1535.                                the video card's memory.
  1536.  
  1537.    EXAMPLE
  1538.        if (W3D_SUCCESS == W3D_GetDriverState(context)
  1539.            RenderFrame();
  1540.        else
  1541.            printf("Error: Bitmap not visible, can't render\n");
  1542.  
  1543.    NOTES
  1544.  
  1545.    BUGS
  1546.  
  1547.    SEE ALSO
  1548.        W3D_LockHardware
  1549.  
  1550. Warp3D/W3D_GetDriverTexFmtInfo                         Warp3D/W3D_GetDriverTexFmtInfo
  1551.  
  1552.    NAME
  1553.        W3D_GetDriverTexFmtInfo -- Get information about the texture format (V2)
  1554.  
  1555.    SYNOPSIS
  1556.        info = W3D_GetDriverTexFmtInfo(driver, format, destfmt);
  1557.        d0                               a0       d0      d1
  1558.  
  1559.        ULONG W3D_GetDriverTexInfo(W3D_Driver*, ULONG, ULONG);
  1560.  
  1561.    FUNCTION
  1562.        This function is used to get information about the texture
  1563.        format, i.e. if it`s directly supported by the hardware,
  1564.        or must be converted in some way. Contrary to the similar
  1565.        function W3d_GetTexFmtInfo, this function does not need a
  1566.        context to operate, but can be used to query individual drivers
  1567.        about their texture format capabilities.
  1568.  
  1569.    INPUTS
  1570.        driver  - A pointer to a W3D_Driver structure
  1571.        texfmt  - The texture format to be queried. Currently,
  1572.                  one of the following:
  1573.                    W3D_CHUNKY           palettized
  1574.                    W3D_A1R5G5B5         a rrrrr ggggg bbbbb
  1575.                    W3D_R5G6B5           rrrrr gggggg bbbbb
  1576.                    W3D_R8G8B8           rrrrrrrr gggggggg bbbbbbbb
  1577.                    W3D_A4R4G4B4         aaaa rrrr gggg bbbb
  1578.                    W3D_A8R8G8B8         aaaaaaaa rrrrrrrr gggggggg bbbbbbbb
  1579.                    W3D_R8G8B8A8         rrrrrrrr gggggggg bbbbbbbb aaaaaaaa
  1580.                    W3D_A8               aaaaaaaa
  1581.                    W3D_L8               llllllll
  1582.                    W3D_L8A8             llllllll aaaaaaaa
  1583.                    W3D_I8               iiiiiiii
  1584.                  See the main documentation for more information.
  1585.        destfmt - The destination screen format.
  1586.  
  1587.    RESULT
  1588.        A bitvector with the following bits
  1589.            W3D_TEXFMT_FAST         Format directly supported by HW
  1590.            W3D_TEXFMT_CLUTFAST     Format directly supported in CLUT modes only
  1591.            W3D_TEXFMT_ARGBFAST     Format directly supported in direct color
  1592.                                        modes only
  1593.            W3D_TEXFMT_UNSUPPORTED  Format not supported, and can't be emulated
  1594.            W3D_TEXFMT_SUPPORTED    Format is supported, although it may be
  1595.                                        internally converted
  1596.  
  1597.    EXAMPLE
  1598.  
  1599.    NOTES
  1600.        Formats that are not directly supported can still be used for textures.
  1601.        Note, however, that those textures must be converted.
  1602.  
  1603.    BUGS
  1604.  
  1605.    SEE ALSO
  1606.        W3D_GetTexFmtInfo()
  1607.  
  1608. Warp3D/W3D_GetScreenmodeList                             Warp3D/W3D_GetScreenmodeList
  1609.  
  1610.    NAME
  1611.        W3D_GetScreenmodeList - Return a list of screen modes (V3)
  1612.  
  1613.    SYNOPSIS
  1614.        W3D_ScreenMode *W3D_GetScreenmodeList(void)
  1615.  
  1616.        list = W3D_GetScreenmodeList();
  1617.  
  1618.    FUNCTION
  1619.        Returns a list of W3D_ScreenMode structures that represent
  1620.        all modes that are usable by Warp3D's drivers.
  1621.  
  1622.        The result is read-only, step through the list by examining
  1623.        the 'Next' field until this is NULL.
  1624.  
  1625.    INPUTS
  1626.        None
  1627.  
  1628.    RESULT
  1629.        list - A pointer to the first W3D_ScreenMode entry or NULL
  1630.               if no screenmode was found
  1631.  
  1632.    EXAMPLE
  1633.  
  1634.    NOTES
  1635.        This function also returns screenmodes which are only usable
  1636.        by software drivers. You should examine the Driver field to
  1637.        find a mode that matches your desired driver.
  1638.  
  1639.        You MUST free this list with W3D_FreeScreenmodeList
  1640.  
  1641.    BUGS
  1642.  
  1643.    SEE ALSO
  1644.        W3D_FreeScreenmodeList
  1645. Warp3D/W3D_GetState                                               Warp3D/W3D_GetState
  1646.  
  1647.    NAME   
  1648.        W3D_GetState -- Get current state of hardware/context
  1649.  
  1650.    SYNOPSIS
  1651.        result = W3D_GetState(context, state);
  1652.        d0                    a0       d0
  1653.  
  1654.        ULONG W3D_GetState(W3D_Context *, ULONG);
  1655.  
  1656.    FUNCTION
  1657.        This function reads the state of the bits in the
  1658.        state field of the context structure.
  1659.  
  1660.    INPUTS
  1661.        context - pointer to a Warp3D context
  1662.        state   - The bit that is tested. Currently, this may
  1663.                  be one of the following:
  1664.                      W3D_AUTOTEXMANAGEMENT  automatic texture management
  1665.                      W3D_SYNCHRON           wait, until HW is idle
  1666.                      W3D_INDIRECT           buffer drawings until W3D_Flush()'ed
  1667.                      W3D_GLOBALTEXENV       global texture modes
  1668.                      W3D_DOUBLEHEIGHT       screen has double height.
  1669.                      W3D_FAST               Drawing functions may modify passed struc
  1670. tures
  1671.                      W3D_TEXMAPPING         texmapping state
  1672.                      W3D_PERSPECTIVE        perspective correction state
  1673.                      W3D_GOURAUD            gouraud/flat shading
  1674.                      W3D_ZBUFFER            Z-Buffer state
  1675.                      W3D_ZBUFFERUPDATE      Z-Buffer update state
  1676.                      W3D_BLENDING           Alpha blending state
  1677.                      W3D_FOGGING            Fogging state
  1678.                      W3D_ANTI_POINT         Point antialiasing
  1679.                      W3D_ANTI_LINE          Line antialiasing
  1680.                      W3D_ANTI_POLYGON       Polygon antialiasing
  1681.                      W3D_ANTI_FULLSCREEN    Fullscreen antialiasing
  1682.                      W3D_DITHERING          dithering state
  1683.                      W3D_LOGICOP            logical operations state
  1684.                      W3D_STENCILBUFFER      stencil buffer state
  1685.                      W3D_ALPHATEST          Alpha test state
  1686.                      W3D_SPECULAR           Specular highlightung state
  1687.                      W3D_TEXMAPPING3D       3D texturemapping state
  1688.                             W3D_CHROMATEST        Chroma test (color keying)
  1689.  
  1690.    RESULT
  1691.        One of the following:
  1692.            W3D_ENABLED     the mode is enabled
  1693.            W3D_DISABLED    the mode is disabled/not available
  1694.  
  1695.    EXAMPLE
  1696.        if (W3D_ENABLED == W3D_GetState(context, W3D_FOGGING)) {
  1697.            printf("Gee, I can`t see in all this fog\n");
  1698.        } else {
  1699.            printf("Aha, that`s better\n");
  1700.        }
  1701.  
  1702.    NOTES
  1703.         Don't use W3D_SYNCHRON, this state might only be useful for
  1704.         debugging purposes.
  1705.  
  1706.         The W3D_FAST mode can speed up your application, always use it,
  1707.         if you don't care what happens to the values in the drawing
  1708.         structures (like W3D_Triangle, W3D_Line etc.)
  1709.  
  1710.         'Indirect drawing' has the advantage, that the 'locking' time
  1711.         is minimized, please provide at least an option for the user to
  1712.         use it.
  1713.  
  1714.         For more information about the different states, please refer
  1715.         to the Warp3D Programmer Documentation.
  1716.  
  1717.    BUGS
  1718.  
  1719.    SEE ALSO
  1720.        W3D_SetState
  1721.  
  1722. Warp3D/W3D_GetTexFmtInfo                                     Warp3D/W3D_GetTexFmtInfo
  1723.  
  1724.    NAME   
  1725.        W3D_GetTexFmtInfo -- Get information about the texture format
  1726.  
  1727.    SYNOPSIS
  1728.        info = W3D_GetTexFmtInfo(context, format, destfmt);
  1729.        d0                       a0       d0      d1
  1730.  
  1731.        ULONG W3D_GetTexInfo(W3D_Context, ULONG, ULONG);
  1732.  
  1733.    FUNCTION
  1734.        This function is used to get information about the texture
  1735.        format, i.e. if it`s directly supported by the hardware,
  1736.        or must be converted in some way.
  1737.  
  1738.    INPUTS
  1739.        context - A valid context pointer
  1740.        texfmt  - The texture format to be queried. Currently,
  1741.                  one of the following:
  1742.                    W3D_CHUNKY           palettized
  1743.                    W3D_A1R5G5B5         a rrrrr ggggg bbbbb
  1744.                    W3D_R5G6B5           rrrrr gggggg bbbbb
  1745.                    W3D_R8G8B8           rrrrrrrr gggggggg bbbbbbbb
  1746.                    W3D_A4R4G4B4         aaaa rrrr gggg bbbb
  1747.                    W3D_A8R8G8B8         aaaaaaaa rrrrrrrr gggggggg bbbbbbbb
  1748.                    W3D_R8G8B8A8         rrrrrrrr gggggggg bbbbbbbb aaaaaaaa
  1749.                    W3D_A8               aaaaaaaa
  1750.                    W3D_L8               llllllll
  1751.                    W3D_L8A8             llllllll aaaaaaaa
  1752.                    W3D_I8               iiiiiiii
  1753.                  See the main documentation for more information.
  1754.        destfmt - The destination screen format.
  1755.  
  1756.    RESULT
  1757.        A bitvector with the following bits
  1758.            W3D_TEXFMT_FAST         Format directly supported by HW
  1759.            W3D_TEXFMT_CLUTFAST     Format directly supported in CLUT modes only
  1760.            W3D_TEXFMT_ARGBFAST     Format directly supported in direct color
  1761.                                        modes only
  1762.            W3D_TEXFMT_UNSUPPORTED  Format not supported, and can't be emulated
  1763.            W3D_TEXFMT_SUPPORTED    Format is supported, although it may be
  1764.                                        internally converted
  1765.  
  1766.    EXAMPLE
  1767.        ULONG info = W3D_GetTexFmtInfo(NULL, W3D_CHUNKY, W3D_FMT_CLUT);
  1768.        if (info & W3D_TEXFMT_CLUTFAST) printf("Supported in CLUT modes\n");
  1769.  
  1770.    NOTES
  1771.        Formats that are not directly supported can still be used for textures.
  1772.        Note, however, that those textures must be converted.
  1773.  
  1774.        IMPORTANT: Prior to Version 2 of the API, this function could be
  1775.        called with a NULL context to query the default driver. Although this
  1776.        is still possible for backward compatibility reasons, a programmer
  1777.        must not use this feature in new projects, but rather use the new and
  1778.        improved W3D_GetDriverTexFmtInfo() function instead, which is essential
  1779.        for multiple driver support. You may still call this function with a
  1780.        valid context, of course.
  1781.  
  1782.    BUGS
  1783.  
  1784.    SEE ALSO
  1785.        W3D_GetDriverTexFmtInfo()
  1786.  
  1787. Warp3D/W3D_Hint                                                       Warp3D/W3D_Hint
  1788.  
  1789.    NAME   
  1790.        W3D_Hint -- Hint about rendering quality
  1791.  
  1792.    SYNOPSIS
  1793.        result = W3D_Hint(context, mode, quality);
  1794.        d0                a0       d0    d1
  1795.  
  1796.        ULONG W3D_Hint(W3D_Context, ULONG, ULONG);
  1797.  
  1798.    FUNCTION
  1799.        Gives Warp3D a hint about the desired quality of some
  1800.        effects. This can be used to improve rendering speed
  1801.        at the cost of display quality.
  1802.  
  1803.    INPUTS
  1804.        context - The context to hint for
  1805.        mode    - The mode to hint for. One of the following values
  1806.                    W3D_H_TEXMAPPING      - quality of general texmapping
  1807.                    W3D_H_MIPMAPPING      - quality of mipmapping
  1808.                    W3D_H_BILINEARFILTER  - quality of bilinear filtering
  1809.                    W3D_H_MMFILTER        - quality of depth filter
  1810.                    W3D_H_PERSPECTIVE     - quality of perspective correction
  1811.                    W3D_H_BLENDING        - quality of alpha blending
  1812.                    W3D_H_FOGGING         - quality of fogging
  1813.                    W3D_H_ANTIALIASING    - quality of antialiasing
  1814.                    W3D_H_DITHERING       - quality of dithering
  1815.                    W3D_H_ZBUFFER         - quality of ZBuffering
  1816.        quality - The desired quality. Possible  values are
  1817.                    W3D_H_FAST            - fast, low quality
  1818.                    W3D_H_AVERAGE         - average speed, average quality
  1819.                    W3D_H_NICE            - low speed, high quality
  1820.  
  1821.  
  1822.    RESULT
  1823.        A value indicating success or failure:
  1824.            W3D_SUCCESS         Success
  1825.            W3D_ILLEGALINPUT    Failure, illegal input
  1826.  
  1827.    EXAMPLE
  1828.  
  1829.    NOTES
  1830.        This function only gives hints to Warp3D. It is possible
  1831.        that it doesn't do anything at all, depending on the
  1832.        possibility the hardware or driver offers.
  1833.  
  1834.    BUGS
  1835.        The ViRGE driver selects it`s filter modes when they are set
  1836.        with W3D_SetFilter, so you have to set the filter modes again
  1837.        when messing with the W3D_H_BILINEARFILTER setting.
  1838.  
  1839.    SEE ALSO
  1840.  
  1841. Warp3D/W3D_LockHardware                                       Warp3D/W3D_LockHardware
  1842.  
  1843.    NAME   
  1844.        W3D_LockHardware -- Gain exclusive hardware access
  1845.  
  1846.    SYNOPSIS
  1847.        res = W3D_LockHardware(context);
  1848.        d0                     a0
  1849.  
  1850.        ULONG W3D_LockHardware(W3D_Context *);
  1851.  
  1852.    FUNCTION
  1853.        This function gains exclusive access to the hardware. It must be
  1854.        called whenever objects are drawn, except when operating in 'indirect
  1855.        render' mode. You should not lock the frame too long, because the
  1856.        system is freezed in locked state.
  1857.  
  1858.    INPUTS
  1859.        context - a pointer to a W3D_Context structure
  1860.  
  1861.    RESULT
  1862.        A value indication success or failure:
  1863.            W3D_SUCCESS     - The hardware is locked
  1864.            W3D_NOTVISIBLE  - The bitmap is not visible/swapped out of vmem
  1865.  
  1866.    EXAMPLE
  1867.        if (W3D_SUCCESS == W3D_LockHardware(context) {
  1868.            ...
  1869.            Render some stuff
  1870.            ...
  1871.            W3D_UnLockHardware(context);
  1872.        } else {
  1873.            printf("Can`t lock hardware\n");
  1874.        }
  1875.  
  1876.    NOTES
  1877.        This function may forbid multitasking (depending on the driver),
  1878.        or even disable interrupts.
  1879.  
  1880.    BUGS
  1881.  
  1882.    SEE ALSO
  1883.        W3D_UnLockHardware, W3D_SetState
  1884.  
  1885. Warp3D/W3D_Query                                                     Warp3D/W3D_Query
  1886.  
  1887.    NAME   
  1888.        W3D_Query -- Query capabilities of the driver
  1889.  
  1890.    SYNOPSIS
  1891.        res = W3D_Query(context, query, destfmt)
  1892.        d0              a0       d0     d1
  1893.  
  1894.        ULONG W3D_Query(W3D_Context *, ULONG, ULONG);
  1895.  
  1896.    FUNCTION
  1897.        This function is used to query the hardware/driver
  1898.        capabilities. It takes destination formats into account
  1899.        (checking compatibility).
  1900.  
  1901.    INPUTS
  1902.        context     - pointer to a W3D_Context
  1903.        query       - a value to be queried.
  1904.                      Currently, the following values are supported:
  1905.                        W3D_Q_DRAW_POINT         point drawing
  1906.                        W3D_Q_DRAW_LINE          line drawing
  1907.                        W3D_Q_DRAW_TRIANGLE      triangle drawing
  1908.                        W3D_Q_DRAW_POINT_X       points with size != 1 supported
  1909.                        W3D_Q_DRAW_LINE_X        lines with width != 1 supported
  1910.                        W3D_Q_DRAW_LINE_ST       line stippling supported
  1911.                        W3D_Q_DRAW_POLY_ST       polygon stippling supported
  1912.                        W3D_Q_TEXMAPPING         texmapping in general
  1913.                        W3D_Q_MIPMAPPING         mipmapping
  1914.                        W3D_Q_BILINEARFILTER     bilinear filter
  1915.                        W3D_Q_MMFILTER           mipmap filter
  1916.                        W3D_Q_LINEAR_REPEAT      W3D_REPEAT for linear texmapping
  1917.                        W3D_Q_LINEAR_CLAMP       W3D_CLAMP for linear texmapping
  1918.                        W3D_Q_PERPESCTIVE        perspective correction
  1919.                        W3D_Q_PERSP_REPEAT       W3D_REPEAT for persp. texmapping
  1920.                        W3D_Q_PERSP_CLAMP        W3D_CLAMP for persp. texmapping
  1921.                        W3D_Q_ENV_REPLACE        texenv REPLACE
  1922.                        W3D_Q_ENV_DECAL          texenv DECAL
  1923.                        W3D_Q_ENV_MODULATE       texenv MODULATE
  1924.                        W3D_Q_ENV_BLEND          texenv BLEND
  1925.                        W3D_Q_FLATSHADING        flat shading
  1926.                        W3D_Q_GOURAUDSHADING     gouraud shading
  1927.                        W3D_Q_ZBUFFER            Z buffer in general
  1928.                        W3D_Q_ZBUFFERUPDATE      Z buffer update
  1929.                        W3D_Q_ZCOMPAREMODES      Z buffer compare modes
  1930.                        W3D_Q_ALPHATEST          alpha test in general
  1931.                        W3D_Q_ALPHATESTMODES     alpha test modes
  1932.                        W3D_Q_BLENDING           alpha blending
  1933.                        W3D_Q_SRCFACTORS         source factors
  1934.                        W3D_Q_DESTFACTORS        destination factors
  1935.                        W3D_Q_FOGGING            fogging in general
  1936.                        W3D_Q_LINEAR             linear fogging
  1937.                        W3D_Q_EXPONENTIAL        exponential fogging
  1938.                        W3D_Q_S_EXPONENTIAL      square exponential fogging
  1939.                        W3D_Q_ANTIALIASING       antialiasing in general
  1940.                        W3D_Q_ANTI_POINT         point antialiasing
  1941.                        W3D_Q_ANTI_LINE          line antialiasing
  1942.                        W3D_Q_ANTI_POLYGON       polygon antialiasing
  1943.                        W3D_Q_ANTI_FULLSCREEN    fullscreen antialiasing
  1944.                        W3D_Q_DITHERING          dithering
  1945.                        W3D_Q_SCISSOR            scissor test
  1946.                        W3D_Q_MAXTEXWIDTH        max. texture width
  1947.                        W3D_Q_MAXTEXHEIGHT       max. texture height
  1948.                        W3D_Q_RECTTEXTURES       rectangular textures
  1949.                        W3D_Q_LOGICOP            logical operations
  1950.                        W3D_Q_MASKING            color/index masking
  1951.                        W3D_Q_STENCILBUFFER      stencil buffer in general
  1952.                        W3D_Q_STENCIL_MASK       mask value
  1953.                        W3D_Q_STENCIL_FUNC       stencil functions
  1954.                        W3D_Q_STENCIL_SFAIL      stencil operation SFAIL
  1955.                        W3D_Q_STENCIL_DPFAIL     stencil operation DPFAIL
  1956.                        W3D_Q_STENCIL_DPPASS     stencil operation DPPASS
  1957.                        W3D_Q_STENCIL_WRMASK     stencil buffer supports write masking
  1958.                        W3D_Q_PALETTECONV        driver can use texture with a pallett
  1959. e
  1960.                                                    other than the screen palette on
  1961.                                                    8 bit screens
  1962.                        W3D_Q_DRAW_POINT_FX     driver supports point fx (fog, zbuffer
  1963. )
  1964.                        W3D_Q_DRAW_POINT_TEX    driver supports points textured
  1965.                        W3D_Q_DRAW_LINE_FX      driver supports line fx
  1966.                        W3D_Q_DRAW_LINE_TEX     driver supports textured lines
  1967.                        W3D_Q_SPECULAR          driver supports specular reflection
  1968.        destfmt     - The destination format
  1969.  
  1970.    RESULT
  1971.        Depends on the item. With most of the "is this supported"-type
  1972.        queries, one of the following constants is returned:
  1973.            W3D_FULLY_SUPPORTED     Completely supported by driver
  1974.            W3D_PARTIALLY_SUPPORTED Only partially supported
  1975.            W3D_NOT_SUPPORTED       Not supported
  1976.  
  1977.        With "what is the value"-type queries like W3D_Q_MAXTEXWIDTH,
  1978.        an ULONG is returned.
  1979.  
  1980.    EXAMPLE
  1981.        switch(W3D_Query(context, W3D_Q_TEXMAPING, destfmt)) {
  1982.        case W3D_FULLY_SUPPORTED:     printf("Completely supported by driver\n");
  1983.                                      break;
  1984.        case W3D_PARTIALLY_SUPPORTED: printf("Only partially supported\n");
  1985.                                      break;
  1986.        case W3D_NOT_SUPPORTED:       printf("Not supported\n");
  1987.                                      break;
  1988.        }
  1989.  
  1990.    NOTES
  1991.        Regarding chunky/ARGB combinations:
  1992.        You are advised that you always use chunky textures with chunky
  1993.        screens only, and ARGB textures with ARGB screens
  1994.  
  1995.        IMPORTANT: Prior to Version 2 of the API, the W3D_Query function
  1996.        could be called with a NULL pointer instead of a context. Although
  1997.        this possibility is still supported for backward compatibility,
  1998.        the programmer is strictly encouraged to use the new W3D_QueryDriver
  1999.        function instead. The W3D_QueryDriver function may be used to directly
  2000.        query a specific driver for capabilities, which is essential when
  2001.        working with V2+ and multiple drivers.
  2002.  
  2003.    BUGS
  2004.  
  2005.    SEE ALSO
  2006.        W3D_QueryDriver()
  2007.  
  2008. Warp3D/W3D_QueryDriver                                         Warp3D/W3D_QueryDriver
  2009.  
  2010.    NAME
  2011.        W3D_QueryDriver -- Query capabilities of any driver (V2)
  2012.  
  2013.    SYNOPSIS
  2014.        res = W3D_QueryDriver(driver, query, destfmt)
  2015.        d0                    a0       d0     d1
  2016.  
  2017.        ULONG W3D_QueryDriver(W3D_Driver *, ULONG, ULONG);
  2018.  
  2019.    FUNCTION
  2020.        This function is similar to the W3D_Query function, only
  2021.        that it does not require a context but rather operates on
  2022.        a driver obtained by W3D_GetDrivers().
  2023.  
  2024.    INPUTS
  2025.        driver  -   A pointer to a W3D_Driver structure obtained by
  2026.                    W3D_GetDrivers()
  2027.        query   -   The data item to be queried. See W3D_Query() for
  2028.                    a list of available query items.
  2029.        destfmt -   The destination format you intend to use.
  2030.  
  2031.    RESULT
  2032.        One of the following values is returned:
  2033.            W3D_FULLY_SUPPORTED     Completely supported by driver
  2034.            W3D_PARTIALLY_SUPPORTED Only partially supported
  2035.            W3D_NOT_SUPPORTED       Not supported
  2036.  
  2037.    EXAMPLE
  2038.  
  2039.    NOTES
  2040.  
  2041.    BUGS
  2042.  
  2043.    SEE ALSO
  2044.        W3D_Query(), W3D_GetDrivers()
  2045.  
  2046. Warp3D/W3D_ReadStencilPixel                               Warp3D/W3D_ReadStencilPixel
  2047.  
  2048.    NAME   
  2049.        W3D_ReadStencilPixel -- Read a pixel from the stencil buffer
  2050.  
  2051.    SYNOPSIS
  2052.        success = W3D_ReadStencilPixel(context, x, y, st);
  2053.        d0                             a0       d0 d1 a1
  2054.  
  2055.        ULONG W3D_ReadStencilPixel(W3D_Context *, ULONG, ULONG, ULONG *);
  2056.  
  2057.    FUNCTION
  2058.        Read the stencil buffer pixel at x,y into the variable pointed
  2059.        to by st.
  2060.        This function may only be used while the hardware is locked,
  2061.        except when indirect drawing is used.
  2062.  
  2063.    INPUTS
  2064.        context - The context to use
  2065.        x,y     - Coordinates of point
  2066.        st      - Pointer to a variable to hold the read pixel
  2067.  
  2068.    RESULT
  2069.        One of the following values:
  2070.            W3D_SUCCESS         Operation successful
  2071.            W3D_NOSTENCILBUFFER No stencil buffer present
  2072.            W3D_NOTVISIBLE      The stencil buffer can not be accessed by
  2073.                                    the hardware
  2074.            W3D_NOTVISIBLE      Indirect mode only. Locking failed.
  2075.  
  2076.    EXAMPLE
  2077.  
  2078.    NOTES
  2079.         This function is primarly intended for OpenGL implementations,
  2080.         which might need access to the stencil buffer. This function
  2081.         is slow and should normally not be called.
  2082.  
  2083.         Important note: In indirect mode you have to make sure, that
  2084.         the stencil buffer is up to date, no Flush is internally done
  2085.         by this function. You have to call W3D_Flush, if the stencil
  2086.         buffer is not up to date yet.
  2087.  
  2088.    BUGS
  2089.         Indirect mode: the hardware is internally not locked for
  2090.         performance reasons, therefore the result might be wrong, if
  2091.         the corresponding buffer is swapped out.
  2092.  
  2093.    SEE ALSO
  2094.        W3D_ReadStencilSpan
  2095.  
  2096. Warp3D/W3D_ReadStencilSpan                                 Warp3D/W3D_ReadStencilSpan
  2097.  
  2098.    NAME   
  2099.        W3D_ReadStencilSpan -- Read a range of stencil buffer pixels
  2100.  
  2101.    SYNOPSIS
  2102.        success = W3D_ReadStencilSpan(context, x, y, n, st);
  2103.        d0                            a0       d0 d1 d2 a1
  2104.  
  2105.        ULONG W3D_ReadStencilSpan(W3D_Context *, ULONG, ULONG, ULONG,
  2106.                     ULONG []);
  2107.  
  2108.    FUNCTION
  2109.        Read a span of pixel value from the stencil buffer. The resulting
  2110.        pixels are put into the memory area pointed to by st.
  2111.        This function may only be used while the hardware is locked,
  2112.        except when indirect drawing is used.
  2113.  
  2114.    INPUTS
  2115.        context - The context
  2116.        x,y     - Coordinates of span start
  2117.        n       - Number of pixels to read
  2118.        st      - pointer to the array to hold the pixel
  2119.  
  2120.    RESULT
  2121.        One of the following values:
  2122.            W3D_SUCCESS             Operation successful
  2123.            W3D_NOSTENCILBUFFER     No stencil buffer found
  2124.            W3D_NOTVISIBLE          The stencil buffer can not be accessed by
  2125.                                        the hardware
  2126.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2127.  
  2128.    EXAMPLE
  2129.  
  2130.    NOTES
  2131.         If you need to read more than one consecutive pixel, use this
  2132.         function instead of calling the single pixel version repeatedly.
  2133.  
  2134.         This function is primarly intended for OpenGL implementations,
  2135.         which might need access to the stencil buffer. This function
  2136.         is slow and should normally not be called.
  2137.  
  2138.         Important note: In indirect mode you have to make sure, that
  2139.         the stencil buffer is up to date, no Flush is internally done
  2140.         by this function. You have to call W3D_Flush, if the stencil
  2141.         buffer is not up to date yet.
  2142.  
  2143.    BUGS
  2144.         Indirect mode: the hardware is internally not locked for
  2145.         performance reasons, therefore the result might be wrong, if
  2146.         the corresponding buffer is swapped out.
  2147.  
  2148.    SEE ALSO
  2149.        W3D_ReadStencilPixel
  2150.  
  2151. Warp3D/W3D_ReadZPixel                                           Warp3D/W3D_ReadZPixel
  2152.  
  2153.    NAME   
  2154.        W3D_ReadZPixel -- Read a pixel value from the ZBuffer
  2155.  
  2156.    SYNOPSIS
  2157.        success = W3D_ReadZPixel(context, x, y, z);
  2158.        d0                       a0       d0 d1 a1
  2159.  
  2160.        ULONG W3D_ReadZPixel(W3D_Context *, ULONG, ULONG, W3D_Double *);
  2161.  
  2162.    FUNCTION
  2163.        Read ZBuffer pixel x,y into variable pointed to by z;
  2164.        This function may only be used while the hardware is locked,
  2165.        except when indirect drawing is used.
  2166.  
  2167.    INPUTS
  2168.        context - pointer to the context
  2169.        x,y     - coordinates of pixel
  2170.        z       - pointer to a W3D_Double
  2171.  
  2172.    RESULT
  2173.        One of the following:
  2174.            W3D_SUCCESS     Successful operation
  2175.            W3D_NOZBUFFER   No ZBuffer was allocated
  2176.            W3D_NOTVISIBLE  ZBuffer is not visible
  2177.  
  2178.    EXAMPLE
  2179.  
  2180.    NOTES
  2181.        This function is primarly intended for OpenGL implementations,
  2182.        which might need access to the Z buffer. This function
  2183.        is slow and should normally not be called.
  2184.  
  2185.        * IMPORTANT NOTE: *
  2186.        For speed reasons, this call is *NOT* compatible with indirect drawing.
  2187.        To use this call with indirect mode, you have to manually W3D_Flush,
  2188.        and, should you use any drawing calls, you'll have to W3D_Flush again.
  2189.  
  2190.    BUGS
  2191.        Indirect mode: the hardware is internally not locked for
  2192.        performance reasons, therefore the result might be wrong, if
  2193.        the corresponding buffer is swapped out.
  2194.  
  2195.    SEE ALSO
  2196.        W3D_ReadZSpan
  2197.  
  2198. Warp3D/W3D_ReadZSpan                                             Warp3D/W3D_ReadZSpan
  2199.  
  2200.    NAME   
  2201.        W3D_ReadZSpan -- read a range of ZBuffer pixels
  2202.  
  2203.    SYNOPSIS
  2204.        success = W3D_ReadZSpan(context, x, y, n, z);
  2205.        d0                      a0       d0 d1 d2 a1
  2206.  
  2207.        ULONG W3D_ReadZSpan(W3D_Context *, ULONG, ULONG, ULONG, W3D_Double []);
  2208.  
  2209.    FUNCTION
  2210.        Read a span of ZBuffer pixels into an array pointed to by the z
  2211.        parameter.
  2212.        This function may only be used while the hardware is locked,
  2213.        except when indirect drawing is used.
  2214.  
  2215.    INPUTS
  2216.        context - Pointer to the context
  2217.        x,y     - Coordinates of pixels
  2218.        n       - Number of pixels to read
  2219.        z       - Array of W3D_Double to fill. Note that the array must
  2220.                  be large enough (i.e. at least n)
  2221.  
  2222.    RESULT
  2223.        One of the following values
  2224.            W3D_SUCCESS     Operation successful
  2225.            W3D_NOZBUFFER   No ZBuffer was allocated
  2226.            W3D_NOTVISIBLE  ZBuffer is not visible
  2227.  
  2228.    EXAMPLE
  2229.  
  2230.    NOTES
  2231.        You should use this function instead of W3D_ReadZPixel if you`re
  2232.        going to read more pixels than just one.
  2233.  
  2234.        This function is primarly intended for OpenGL implementations,
  2235.        which might need access to the Z buffer. This function
  2236.        is slow and should normally not be called.
  2237.  
  2238.        * IMPORTANT NOTE: *
  2239.        For speed reasons, this call is *NOT* compatible with indirect drawing.
  2240.        To use this call with indirect mode, you have to manually W3D_Flush,
  2241.        and, should you use any drawing calls, you'll have to W3D_Flush again.
  2242.  
  2243.    BUGS
  2244.        Indirect mode: the hardware is internally not locked for
  2245.        performance reasons, therefore the result might be wrong, if
  2246.        the corresponding buffer is swapped out.
  2247.  
  2248.  
  2249.    SEE ALSO
  2250.        W3D_ReadZPixel
  2251.  
  2252. Warp3D/W3D_ReleaseTexture                                   Warp3D/W3D_ReleaseTexture
  2253.  
  2254.    NAME   
  2255.        W3D_ReleaseTexture -- Release texture from video ram
  2256.  
  2257.    SYNOPSIS
  2258.        W3D_ReleaseTexture(context, texture);
  2259.                           a0       a1
  2260.  
  2261.        void W3D_ReleaseTexture(W3D_Context *, W3D_Texture *);
  2262.  
  2263.    FUNCTION
  2264.        Release a texture from video ram. This frees the memory
  2265.        allocated by that texture.
  2266.  
  2267.    INPUTS
  2268.        context - Pointer to a W3D_Context
  2269.        texture - Pointer to the texture to be released
  2270.  
  2271.    RESULT
  2272.        None
  2273.  
  2274.    EXAMPLE
  2275.        extern W3D_Texture *texture;
  2276.        extern W3D_Context *context;
  2277.        W3D_ReleaseTexture(context, texture);
  2278.  
  2279.    NOTES
  2280.        This call does nothing if W3D_AUTOTEXMANAGEMENT is set
  2281.        in the context`s state.
  2282.  
  2283.    BUGS
  2284.  
  2285.    SEE ALSO
  2286.        W3D_UploadTexture
  2287.  
  2288. Warp3D/W3D_RequestMode                                         Warp3D/W3D_RequestMode
  2289.  
  2290.    NAME
  2291.        W3D_RequestMode -- Request a screen mode (V2)
  2292.  
  2293.    SYNOPSIS
  2294.        ModeID = W3D_RequestMode(taglist);
  2295.           D0                     a0
  2296.  
  2297.        ULONG W3D_RequestMode(struct TagItem *);
  2298.  
  2299.    FUNCTION
  2300.        This function presents the user with an ASL-Type screen mode
  2301.        requester. The mode requester will only include those screen modes
  2302.        that are supported by the specified combination of tag items.
  2303.  
  2304.    INPUTS
  2305.        taglist - A taglist of W3D_SMR_#? items. The following items
  2306.                  are defined:
  2307.            W3D_SMR_SIZEFILTER (BOOL)
  2308.                If set to TRUE, filter ASLSM_MinWidth, ASLSM_MinHeight,
  2309.                ASLSM_MaxWidth, ASL_MaxHeight
  2310.            W3D_SMR_DRIVER (W3D_Driver *)
  2311.                A pointer to a W3D_Driver structure that you want to use.
  2312.                If this tag is specified, the screen modes in the
  2313.                requester will all be compatible with this driver.
  2314.            W3D_SMR_DESTFMT (W3D_FMT_#? constants)
  2315.                The screen/bitmap formats you want to use. If this tag
  2316.                is active, all screenmodes will be filtered accordingly.
  2317.                You may specify a bitmask to get more than one format.
  2318.            W3D_SMR_TYPE (W3D_DRIVER_3DHW/W3D_DRIVER_CPU)
  2319.                Specifies if you want to filter the screen modes according
  2320.                to the driver type. If this is set to W3D_DRIVER_CPU,
  2321.                only the active CPU driver is used for filtering. Otherwise,
  2322.                all modes of all hardware is filtered, unless the W3D_SMR_DRIVER
  2323.                tag specifies a special driver.
  2324.            ASLSM_???
  2325.                You may give an arbitrary number of ASLSM_#? tags that will be
  2326.                passed to asl.library. Most notably, these include those tags
  2327.                the localize the requester or modify the look, including position
  2328.                and size. Most notably, the ASLSM_Min#? and ASLSM_Max#? tags
  2329.                may be used in a special meaning if the W3D_SMR_SIZEFILTER
  2330.                tag item is present and set to TRUE.
  2331.  
  2332.            Not all of the combinations make sense, for example, specifiying
  2333.            W3D_SMR_TYPE together with W3D_SMR_DRIVER.
  2334.  
  2335.    RESULT
  2336.        ModeID  -   The ModeID the user selected, or INVALID_ID if the requester
  2337.                    was cancelled.
  2338.  
  2339.    EXAMPLE
  2340.  
  2341.    NOTES
  2342.  
  2343.    BUGS
  2344.  
  2345.    SEE ALSO
  2346.        W3D_SelectDriver()
  2347.  
  2348. Warp3D/W3D_SetAlphaMode                                       Warp3D/W3D_SetAlphaMode
  2349.  
  2350.    NAME   
  2351.        W3D_SetAlpha -- Set the alpha test mode
  2352.  
  2353.    SYNOPSIS
  2354.        success = W3D_SetAlphaMode(context, mode, refval);
  2355.        d0                         a0       d1    a1
  2356.  
  2357.        ULONG W3D_SetAlphaMode(W3D_Context, ULONG, W3D_Float *);
  2358.  
  2359.    FUNCTION
  2360.        This function defines the way the alpha test is performed.
  2361.        This test compares the incoming pixel's alpha value
  2362.        with the reference value, and decides, depending on the set
  2363.        mode, if the pixel is discarded or not.
  2364.  
  2365.    INPUTS
  2366.        context  - The context
  2367.        mode     - The alpha test mode. One of the following:
  2368.                   W3D_A_NEVER       Always discard
  2369.                   W3D_A_LESS        Draw, if value < refvalue
  2370.                   W3D_A_GEQUAL      Draw, if value >= refvalue
  2371.                   W3D_A_LEQUAL      Draw, if value <= refvalue
  2372.                   W3D_A_GREATER     Draw, if value > refvalue
  2373.                   W3D_A_NOTEQUAL    Draw, if value != refvalue
  2374.                   W3D_A_ALWAYS      always draw
  2375.        refvalue - Pointer to the alpha reference value. Must be in
  2376.                   the interval [0..1]
  2377.  
  2378.    RESULT
  2379.        One of the following:
  2380.            W3D_SUCCESS             Success
  2381.            W3D_ILLEGALINPUT        Illegal alpha mode
  2382.            W3D_UNSUPPORTEDATEST    Alpha test unsupported
  2383.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2384.  
  2385.    EXAMPLE
  2386.  
  2387.    NOTES
  2388.        Alpha testing is probably not supported on older 3D hardware.
  2389.  
  2390.    BUGS
  2391.  
  2392.    SEE ALSO
  2393.  
  2394. Warp3D/W3D_SetBlendMode                                       Warp3D/W3D_SetBlendMode
  2395.  
  2396.    NAME   
  2397.        W3D_SetBlendMode -- Set the blending mode
  2398.  
  2399.    SYNOPSIS
  2400.        success = W3D_SetBlendMode(context, srcfunc, dstfunc);
  2401.        d0                         a0       d0       d1
  2402.  
  2403.        ULONG W3D_SetBlendMode(W3D_Context *, ULONG, ULONG);
  2404.  
  2405.    FUNCTION
  2406.        Sets the blending mode. Blending has to be enabled using
  2407.        W3D_SetState. For more information about the blending modes, see
  2408.        the OpenGL specs.
  2409.  
  2410.    INPUTS
  2411.        context - pointer to the W3D_Context
  2412.        srcfunc - The mode for the source pixel. Values are:
  2413.                    W3D_ZERO
  2414.                    W3D_ONE
  2415.                    W3D_DST_COLOR
  2416.                    W3D_ONE_MINUS_DST_COLOR
  2417.                    W3D_SRC_ALPHA
  2418.                    W3D_ONE_MINUS_SRC_ALPHA
  2419.                    W3D_DST_ALPHA
  2420.                    W3D_ONE_MINUS_DST_ALPHA
  2421.                    W3D_SRC_ALPHA_SATURATE
  2422.                    W3D_CONSTANT_COLOR
  2423.                    W3D_ONE_MINUS_CONSTANT_COLOR
  2424.                    W3D_CONSTANT_ALPHA
  2425.                    W3D_ONE_MINUS_CONSTANT_ALPHA
  2426.        dstfunc - Mode for the destination:
  2427.                    W3D_ZERO
  2428.                    W3D_ONE
  2429.                    W3D_SRC_COLOR
  2430.                    W3D_ONE_MINUS_SRC_COLOR
  2431.                    W3D_SRC_ALPHA
  2432.                    W3D_ONE_MINUS_SRC_ALPHA
  2433.                    W3D_DST_ALPHA
  2434.                    W3D_ONE_MINUS_DST_ALPHA
  2435.                    W3D_CONSTANT_COLOR
  2436.                    W3D_ONE_MINUS_CONSTANT_COLOR
  2437.                    W3D_CONSTANT_ALPHA
  2438.                    W3D_ONE_MINUS_CONSTANT_ALPHA
  2439.  
  2440.    RESULT
  2441.        One of the following:
  2442.            W3D_SUCCESS             Success
  2443.            W3D_ILLEGALINPUT        Illegal alpha blend mode
  2444.            W3D_UNSUPPORTEDBLEND    Mode is not supported by current driver
  2445.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2446.  
  2447.    EXAMPLE
  2448.  
  2449.    NOTES
  2450.  
  2451.    BUGS
  2452.  
  2453.    SEE ALSO
  2454.        W3D_SetState, W3D_GetState
  2455.  
  2456. Warp3D/W3D_SetChromaTestBounds                         Warp3D/W3D_SetChromaTestBounds
  2457.  
  2458.    NAME   
  2459.        W3D_SetChromaTestBounds -- Set range for color keying
  2460.  
  2461.    SYNOPSIS
  2462.        res = W3D_SetChromaTestBounds(context, texture, lower, upper, mode)
  2463.        d0                            a0       a1       d0     d1     d2
  2464.  
  2465.        ULONG W3D_SetChromaTestBounds(W3D_Context *, W3D_Texture *, ULONG, ULONG, ULON
  2466. G);
  2467.  
  2468.    FUNCTION
  2469.        Sets the bounds for chroma testing. All colors inside the range defined by
  2470.        bounds are treated normally, while pixels outside the range are not drawn.
  2471.  
  2472.    INPUTS
  2473.        context - pointer to a context to use
  2474.        texture - pointer to a texture
  2475.        lower   - lower bound.
  2476.        upper   - upper bound
  2477.        mode    - chroma test mode
  2478.                The following values are possible:
  2479.                W3D_CHROMATEST_NONE         disable chroma testing
  2480.                W3D_CHROMATEST_INCLUSIVE    texels within the specified range pass
  2481.                                            the test (i.e. get drawn)
  2482.                W3D_CHROMATEST_EXCLUSIVE    only texels outside the specified range
  2483.                                            are drawn, others are rejected.
  2484.  
  2485.    RESULT
  2486.        One of the following:
  2487.            W3D_SUCCESS             Success
  2488.            W3D_UNSUPPORTED        Chroma keying is not supported on this hardware
  2489.  
  2490.    EXAMPLE
  2491.  
  2492.    NOTES
  2493.  
  2494.    BUGS
  2495.  
  2496.    SEE ALSO
  2497.  
  2498. Warp3D/W3D_SetColorMask                                       Warp3D/W3D_SetColorMask
  2499.  
  2500.    NAME   
  2501.        W3D_SetColorMask -- Set mask for drawing
  2502.  
  2503.    SYNOPSIS
  2504.        success = W3D_SetColorMask(context, red, green, blue, alpha);
  2505.        d0                         a0       d0   d1     d2    d3
  2506.  
  2507.        ULONG W3D_SetColorMask(W3D_Context *, W3D_Bool, W3D_Bool, W3D_Bool,
  2508.            W3D_Bool);
  2509.  
  2510.    FUNCTION
  2511.        This function defines the mask for all drawing operations in
  2512.        direct color mode (15/16/24/32 bit modes).
  2513.  
  2514.    INPUTS
  2515.        context     - the context
  2516.        red
  2517.        green
  2518.        blue
  2519.        alpha       - If set to FALSE, the component should be masked out.
  2520.  
  2521.    RESULT
  2522.        W3D_SUCCESS             Success
  2523.        W3D_MASKNOTSUPPORTED    Masking is not supported by the current driver
  2524.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2525.  
  2526.    EXAMPLE
  2527.  
  2528.    NOTES
  2529.  
  2530.    BUGS
  2531.  
  2532.    SEE ALSO
  2533.        W3D_SetPenMask
  2534.  
  2535. Warp3D/W3D_SetCurrentColor                                 Warp3D/W3D_SetCurrentColor
  2536.  
  2537.    NAME   
  2538.        W3D_SetCurrentColor -- Set color for single-color operations
  2539.  
  2540.    SYNOPSIS
  2541.        ret = W3D_SetCurrentColor(context, color);
  2542.                                  a0       a1
  2543.  
  2544.        ULONG W3D_SetCurrentColor(W3D_Context *, W3D_Color *);
  2545.  
  2546.    FUNCTION
  2547.        Defines the color to use for operations where one single color
  2548.        is used, i.e. flat-shaded opbjects. This color is only used for
  2549.        RGBA destinations.
  2550.  
  2551.    INPUTS
  2552.        context - Context pointer
  2553.        color   - Pointer to a color to use
  2554.  
  2555.    RESULT
  2556.        W3D_QUEUFAIL    Queueing failed in indirect mode
  2557.        W3D_NOTVISIBLE  Locking failed in indirect mode
  2558.  
  2559.    EXAMPLE
  2560.  
  2561.    NOTES
  2562.  
  2563.    BUGS
  2564.  
  2565.    SEE ALSO
  2566.  
  2567. Warp3D/W3D_SetCurrentPen                                     Warp3D/W3D_SetCurrentPen
  2568.  
  2569.    NAME   
  2570.        W3D_SetCurrentPen -- Set pen for single-color operations
  2571.  
  2572.    SYNOPSIS
  2573.        W3D_SetCurrentPen(context, pen);
  2574.                          a0       d1
  2575.  
  2576.        void W3D_SetCurrentPen(W3D_Context *, ULONG);
  2577.  
  2578.    FUNCTION
  2579.        Define the pen to use for single-color operations, such as flat-shaded
  2580.        objects. The pen setting is olny used for chunky destinations.
  2581.  
  2582.    INPUTS
  2583.        context - a context pointer
  2584.        pen     - the pen number to use
  2585.  
  2586.    RESULT
  2587.        W3D_QUEUFAIL    Queueing failed in indirect mode
  2588.        W3D_NOTVISIBLE  Locking failed in indirect mode
  2589.  
  2590.    EXAMPLE
  2591.  
  2592.    NOTES
  2593.  
  2594.    BUGS
  2595.  
  2596.    SEE ALSO
  2597.  
  2598. Warp3D/W3D_SetDrawRegion                                     Warp3D/W3D_SetDrawRegion
  2599.  
  2600.    NAME   
  2601.        W3D_SetDrawRegion -- Set the clipping rectangle
  2602.  
  2603.    SYNOPSIS
  2604.        success = W3D_SetDrawRegion(context, bm, yoffset, scissor);
  2605.        d0                          a0       a1  d1       a2
  2606.  
  2607.        ULONG W3D_SetDrawRegion(W3D_Context *, struct BitMap *, ULONG,
  2608.                W3D_Scissor *);
  2609.  
  2610.    FUNCTION
  2611.        This function defines/changes the current drawing region.
  2612.        It's used for multibuffering and clipping.
  2613.  
  2614.    INPUTS
  2615.        context - The context
  2616.        bm      - The bitmap to draw to. If NULL, the old bitmap is used
  2617.        yoffset - The vertical offset for the top-left edge. Used for
  2618.                  multibuffering.
  2619.        scissor - If not NULL, defines the scissoring region. All values
  2620.                  are taken to be relative to (0, yoffset) in the bitmap.
  2621.  
  2622.  
  2623.    RESULT
  2624.        One of the following:
  2625.            W3D_SUCCESS         Success.
  2626.            W3D_ILLEGALBITMAP   Illegal bitmap
  2627.            W3D_UNSUPPORTEDFMT  Unsupported format
  2628.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2629.  
  2630.    EXAMPLE
  2631.  
  2632.    NOTES
  2633.        Due to constraints on bitmap placement in some drivers, bitmap data
  2634.        must be aligned to 8 byte boundaries
  2635.  
  2636.    BUGS
  2637.  
  2638.    SEE ALSO
  2639.  
  2640. Warp3D/W3D_SetDrawRegionWBM                               Warp3D/W3D_SetDrawRegionWBM
  2641.  
  2642.    NAME
  2643.        W3D_SetDrawRegionWBM -- Set the clipping rectangle for a W3D_Bitmap
  2644.  
  2645.    SYNOPSIS
  2646.        success = W3D_SetDrawRegion(context, bm, scissor);
  2647.        d0                          a0       a1  a2
  2648.  
  2649.        ULONG W3D_SetDrawRegion(W3D_Context *, W3D_Bitmap *, W3D_Scissor *);
  2650.  
  2651.    FUNCTION
  2652.        This function defines/changes the current drawing region.
  2653.        It's used for multibuffering and clipping.
  2654.        The only difference to W3D_SetDrawRegion is the bitmap used.
  2655.  
  2656.    INPUTS
  2657.        context - The context
  2658.        bm      - The bitmap to draw to. If NULL, the old bitmap is used
  2659.        scissor - If not NULL, defines the scissoring region. All values
  2660.                  are taken to be relative to (0, yoffset) in the bitmap.
  2661.  
  2662.    RESULT
  2663.        One of the following:
  2664.            W3D_SUCCESS         Success.
  2665.            W3D_ILLEGALBITMAP   Illegal bitmap
  2666.            W3D_UNSUPPORTEDFMT  Unsupported format
  2667.  
  2668.    EXAMPLE
  2669.  
  2670.    NOTES
  2671.  
  2672.    BUGS
  2673.  
  2674.    SEE ALSO
  2675.        W3D_SetDrawRegion
  2676.  
  2677. Warp3D/W3D_SetFilter                                             Warp3D/W3D_SetFilter
  2678.  
  2679.    NAME   
  2680.        W3D_SetFilter -- Set the filter method
  2681.  
  2682.    SYNOPSIS
  2683.        res = W3D_SetFilter(context, texture, MinFilter, MagFilter);
  2684.        d0                  a0       a1       d0         d1
  2685.  
  2686.        ULONG W3D_SetFilter(W3D_Context *, W3D_Texture *, ULONG,
  2687.                ULONG);
  2688.  
  2689.    FUNCTION
  2690.        Set the texture`s filter mode. The filter mode used is
  2691.        texture dependant, so it is possible to set different
  2692.        filter modes for different texture.
  2693.  
  2694.    INPUTS
  2695.        context     - Pointer to a W3D_Context
  2696.        texture     - Pointer to the texture to be modified
  2697.        MinFilter   - Minification filter. May be one of the following:
  2698.                      W3D_NEAREST               no mipmapping, no filtering
  2699.                      W3D_LINEAR                no mipmapping, bilinear filtering
  2700.                      W3D_NEAREST_MIP_NEAREST   mippmapping, no filtering
  2701.                      W3D_LINEAR_MIP_NEAREST    mipmapping, bilinear filtering
  2702.                      W3D_NEAREST_MIP_LINEAR    mipmapping filtered, no filtering on t
  2703. exture
  2704.                      W3D_LINEAR_MIP_LINEAR     mippmapping with trilinear filtering
  2705.        MagFilter   - Magnification filter. One of these:
  2706.                      W3D_NEAREST               no filtering
  2707.                      W3D_LINEAR                Bilinear filtering
  2708.  
  2709.    RESULT
  2710.        A value indicating success of failure. May be one of the following:
  2711.            W3D_SUCCESS             Success
  2712.            W3D_ILLEGALINPUT        Illegal values for Min/MagFilter
  2713.            W3D_UNSUPPORTEDFILTER   Desired filter not supported by driver
  2714.            W3D_WARNING             Success, but the filter mode was adjusted,
  2715.                                      because *_MIP_* was given for a texture
  2716.                                      without mipmaps
  2717.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2718.  
  2719.    EXAMPLE
  2720.  
  2721.    NOTES
  2722.        Some hardware may ignore the MagFilter. In this case, the MinFilter
  2723.        is used even if the texture is enlarged.
  2724.  
  2725.    BUGS
  2726.  
  2727.    SEE ALSO
  2728.        W3D_Query, W3D_GetTexFmtInfo
  2729.  
  2730. Warp3D/W3D_SetFogParams                                       Warp3D/W3D_SetFogParams
  2731.  
  2732.    NAME   
  2733.        W3D_SetFogParams -- Set fog parameters
  2734.  
  2735.    SYNOPSIS
  2736.        success = W3D_SetFogParams(context, fogparams, fogmode);
  2737.        d0                         a0       a1         d1
  2738.  
  2739.        ULONG W3D_SetFogParams(W3D_Context *, W3D_Fog *, ULONG);
  2740.  
  2741.    FUNCTION
  2742.        This function defines fogging parameters and modes.
  2743.  
  2744.    INPUTS
  2745.        context     - The context to be modified
  2746.        fogparams   - Pointer to a W3D_Fog.
  2747.        fogmode     - The type of fog.
  2748.                        W3D_FOG_LINEAR  Linear fog
  2749.                        W3D_FOG_EXP     Exponential fog
  2750.                        W3D_FOG_EXP_2   Square exponential fogging
  2751.  
  2752.    RESULT
  2753.        One of the following:
  2754.            W3D_SUCCESS         Success
  2755.            W3D_ILLEGALINPUT    Illegal input
  2756.            W3D_UNSUPPORTEDFOG  Fog mode is not supported by current driver
  2757.            W3D_NOTVISIBLE      Indirect mode only. Locking failed.
  2758.  
  2759.    EXAMPLE
  2760.  
  2761.    NOTES
  2762.  
  2763.    BUGS
  2764.  
  2765.    SEE ALSO
  2766.  
  2767. Warp3D/W3D_SetLogicOp                                           Warp3D/W3D_SetLogicOp
  2768.  
  2769.    NAME   
  2770.        W3D_SetLogicOp -- Define logical operation
  2771.  
  2772.    SYNOPSIS
  2773.        success = W3D_SetLogicOp(context, operation);
  2774.        d0                       a0       d1
  2775.  
  2776.        ULONG W3D_SetLogicOp(W3D_Context *, ULONG);
  2777.  
  2778.    FUNCTION
  2779.        Set the logical operation. For further information, see the OpenGL
  2780.        specs.
  2781.  
  2782.    INPUTS
  2783.        context     - Same as ever
  2784.        operation   - The logical operation desired. Possible values are:
  2785.                        W3D_LO_CLEAR            dest = 0
  2786.                        W3D_LO_AND              dest = source & dest
  2787.                        W3D_LO_AND_REVERSE      dest = source & !dest
  2788.                        W3D_LO_COPY             dest = source
  2789.                        W3D_LO_AND_INVERTED     dest = !source & dest
  2790.                        W3D_LO_NOOP             dest = dest
  2791.                        W3D_LO_XOR              dest = source ^ dest
  2792.                        W3D_LO_OR               dest = source | dest
  2793.                        W3D_LO_NOR              dest = !(source | dest)
  2794.                        W3D_LO_EQUIV            dest = !(source ^ dest)
  2795.                        W3D_LO_INVERT           dest = !dest
  2796.                        W3D_LO_OR_REVERSE       dest = source | !dest
  2797.                        W3D_LO_COPY_INVERTED    dest = !source
  2798.                        W3D_LO_OR_INVERTED      dest = !source | dest
  2799.                        W3D_LO_NAND             dest = !(source & dest)
  2800.                        W3D_LO_SET              dest = 1
  2801.  
  2802.    RESULT
  2803.        W3D_SUCCESS             Success
  2804.        W3D_ILLEGALINPUT        Wrong operation
  2805.        W3D_UNSUPPORTEDLOGICOP  Unsupported by current driver
  2806.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2807.  
  2808.    EXAMPLE
  2809.  
  2810.    NOTES
  2811.  
  2812.    BUGS
  2813.  
  2814.    SEE ALSO
  2815.  
  2816. Warp3D/W3D_SetPenMask                                           Warp3D/W3D_SetPenMask
  2817.  
  2818.    NAME
  2819.        W3D_SetPenMask -- set a pen mask for drawing operations
  2820.  
  2821.    SYNOPSIS
  2822.        ret = W3D_SetPenMask(context, indexmask)
  2823.        d0                   a0       d1
  2824.  
  2825.        ULONG W3D_SetPenMask(W3D_Context *, ULONG);
  2826.  
  2827.    FUNCTION
  2828.        This function defines the mask for all drawing operations in
  2829.        chunky modes (8 bit modes).
  2830.  
  2831.    INPUTS
  2832.        context     - The context to use
  2833.        indexmask   - A bitmask which is applied to chunky pixels
  2834.  
  2835.    RESULT
  2836.        W3D_SUCCESS             Success
  2837.        W3D_MASKNOTSUPPORTED    Masking is not supported by the current driver
  2838.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2839.  
  2840.    EXAMPLE
  2841.  
  2842.    NOTES
  2843.  
  2844.    BUGS
  2845.  
  2846.    SEE ALSO
  2847.        W3D_SetColorMask
  2848.  
  2849. Warp3D/W3D_SetScissor                                           Warp3D/W3D_SetScissor
  2850.  
  2851.    NAME
  2852.        W3D_SetScissor -- (Re-) Set the clipping rectangle
  2853.  
  2854.    SYNOPSIS
  2855.        W3D_SetScissor(context,scissor);
  2856.                        a0      a1
  2857.  
  2858.        void W3D_SetScissor(W3D_Context* context, W3D_Scissor* scissor);
  2859.  
  2860.    FUNCTION
  2861.        This function sets or resets the clipping rectangle while retaining
  2862.        the current drawing region.
  2863.  
  2864.    INPUTS
  2865.        context     -   The context structure
  2866.        scissor     -   A new scissor or NULL for full-screen/no clipping
  2867.  
  2868.    RESULT
  2869.  
  2870.    EXAMPLE
  2871.  
  2872.    NOTES
  2873.  
  2874.    BUGS
  2875.  
  2876.    SEE ALSO
  2877.        W3D_SetDrawRegion()
  2878.  
  2879. Warp3D/W3D_SetState                                               Warp3D/W3D_SetState
  2880.  
  2881.    NAME   
  2882.        W3D_SetState -- Enable or disable hardware and context states
  2883.  
  2884.    SYNOPSIS
  2885.        success = W3D_SetState(context, state, newstate);
  2886.        d0                     a0       d0     d1
  2887.  
  2888.        ULONG W3D_SetState(W3D_Context *, ULONG, ULONG);
  2889.  
  2890.    FUNCTION
  2891.        This function is used to enable or disable hardware
  2892.        effects or context states. Success or failure depends
  2893.        on the hardware`s ability to use the effect. Some
  2894.        hardware may not even be able to switch off some effects.
  2895.  
  2896.    INPUTS
  2897.        context     - pointer to a W3D_Context
  2898.        state       - state to be changed. Current states are listed here.
  2899.                      For a more detailed description, read the doc files.
  2900.                        W3D_AUTOTEXMANAGEMENT  automatic texture management
  2901.                        W3D_SYNCHRON           wait, until HW is idle
  2902.                        W3D_INDIRECT           buffer drawings until W3D_Flush()'ed
  2903.                        W3D_GLOBALTEXENV       global texture modes
  2904.                        W3D_DOUBLEHEIGHT       screen has double height
  2905.                        W3D_FAST               Drawing functions may modify passed str
  2906. uctures
  2907.                        W3D_TEXMAPPING         texmapping state
  2908.                        W3D_PERSPECTIVE        perspective correction state
  2909.                        W3D_GOURAUD            gouraud/flat shading
  2910.                        W3D_ZBUFFER            Z-Buffer state
  2911.                        W3D_ZBUFFERUPDATE      Z-Buffer update state
  2912.                        W3D_BLENDING           Alpha blending state
  2913.                        W3D_FOGGING            Fogging state
  2914.                        W3D_ANTI_POINT         Point antialiasing
  2915.                        W3D_ANTI_LINE          Line antialiasing
  2916.                        W3D_ANTI_POLYGON       Polygon antialiasing
  2917.                        W3D_ANTI_FULLSCREEN    Fullscreen antialiasing
  2918.                        W3D_DITHERING          dithering state
  2919.                        W3D_LOGICOP            logical operations state
  2920.                        W3D_STENCILBUFFER      stencil buffer state
  2921.                        W3D_ALPHATEST          alpha test operation
  2922.                        W3D_SPECULAR           Specular highlightung state
  2923.                        W3D_TEXMAPPING3D       3D texturemapping state
  2924.                        W3D_SCISSOR            Scissor test
  2925.                                W3D_CHROMATEST            Chroma testing (i.e. color k
  2926. eying)
  2927.        newstate    - indicates what should be done to the state bit:
  2928.                        W3D_ENABLE             try to switch this feature on
  2929.                        W3D_DISABLE            try to switch it off
  2930.  
  2931.    RESULT
  2932.        One of two constants:
  2933.            W3D_SUCCESS            the operation was successful
  2934.            W3D_UNSUPPORTEDSTATE   the operation can not be done
  2935.  
  2936.    EXAMPLE
  2937.        if (W3D_UNSUPPORTEDSTATE == W3D_SetState(context, W3D_ANTI_FULLSCREEN,
  2938.                                        W3D_ENABLE)) {
  2939.            printf("This hardware does not support fullscreen antialiasing\n");
  2940.        } else {
  2941.            printf("Fullscreen antialiasing enabled\n");
  2942.        }
  2943.  
  2944.    NOTES
  2945.        It's not required to check the return value, however, do not assume anything.
  2946.        The current hardware may not have any restrictions on using
  2947.        i.e. Z buffering, but future hardware may.
  2948.  
  2949.    BUGS
  2950.  
  2951.    SEE ALSO
  2952.        W3D_GetState, W3D_Query
  2953.  
  2954. Warp3D/W3D_SetStencilFunc                                   Warp3D/W3D_SetStencilFunc
  2955.  
  2956.    NAME
  2957.        W3D_SetStencilFunc -- Set stencil function
  2958.  
  2959.    SYNOPSIS
  2960.        success = W3D_SetStencilFunc(context, func, refvalue, mask);
  2961.        d0                           a0       d0    d1        d2
  2962.  
  2963.        ULONG W3D_SetStencilMode(W3D_Context *, ULONG, ULONG, ULONG);
  2964.  
  2965.    FUNCTION
  2966.        Set the stencil test function, as used by the OpenGL render pipeline.
  2967.        For more information, refer to the OpenGL specs.
  2968.  
  2969.    INPUTS
  2970.        context         - W3D context structure
  2971.        func            - stencil test function. Possible value are:
  2972.                            W3D_ST_NEVER         don't draw pixel
  2973.                            W3D_ST_ALWAYS        draw always
  2974.                            W3D_ST_LESS          draw, if refvalue < ST
  2975.                            W3D_ST_LEQUAL        draw, if refvalue <= ST
  2976.                            W3D_ST_EQUAL         draw, if refvalue == ST
  2977.                            W3D_ST_GEQUAL        draw, if refvalue >= ST
  2978.                            W3D_ST_GREATER       draw, if refvalue > ST
  2979.                            W3D_ST_NOTEQUAL      draw, if refvalue != ST
  2980.        refvalue        - reference value (0-255) used for the stencil test
  2981.        mask            - mask value applied to 'refvalue' and to the stencil buffer
  2982.                          content
  2983.  
  2984.    RESULT
  2985.        W3D_SUCCESS             Success
  2986.        W3D_ILLEGALINPUT        Illegal input
  2987.        W3D_UNSUPPORTEDSTTEST   Not supported by current driver
  2988.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  2989.  
  2990.    EXAMPLE
  2991.  
  2992.    NOTES
  2993.        Stencil buffering is only supported by newer hardware
  2994.        Note that the stencil test has to be enabled using
  2995.        W3D_SetState.
  2996.  
  2997.    BUGS
  2998.  
  2999.    SEE ALSO
  3000.  
  3001. Warp3D/W3D_SetStencilOp                                       Warp3D/W3D_SetStencilOp
  3002.  
  3003.    NAME   
  3004.        W3D_SetStencilOp -- Set stencil operation
  3005.  
  3006.    SYNOPSIS
  3007.        success = W3D_SetStencilOp(context, sfail, dpfail, dppass);
  3008.        d0                         a0       d0     d1      d2
  3009.  
  3010.        ULONG W3D_SetStencilOp(W3D_Context *, ULONG, ULONG, ULONG);
  3011.  
  3012.    FUNCTION
  3013.        Set the stencil test operation, as used by the OpenGL render
  3014.        pipeline. For more information, refer to the OpenGL specs.
  3015.  
  3016.    INPUTS
  3017.        context         - context pointer
  3018.        dpfail          - action, if depth test fails
  3019.        dppass          - action, if depth test succeeds. Possible values are
  3020.                          (for all three mentioned cases):
  3021.                            W3D_ST_KEEP          keep stencil buffer value
  3022.                            W3D_ST_ZERO          clear stencil buffer value
  3023.                            W3D_ST_REPLACE       replace by reference value
  3024.                            W3D_ST_INCR          increment
  3025.                            W3D_ST_DECR          decrement
  3026.                            W3D_ST_INVERT        invert bitwise
  3027.  
  3028.    RESULT
  3029.        W3D_SUCCESS             Success
  3030.        W3D_ILLEGALINPUT        Illegal input
  3031.        W3D_UNSUPPORTEDSTTEST   Not supported by current driver
  3032.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  3033.  
  3034.    EXAMPLE
  3035.  
  3036.    NOTES
  3037.        Stencil buffering is only supported on newer hardware.
  3038.        Note that the stencil test has to be enabled using
  3039.        W3D_SetState.
  3040.  
  3041.    BUGS
  3042.  
  3043.    SEE ALSO
  3044.  
  3045. Warp3D/W3D_SetTexEnv                                             Warp3D/W3D_SetTexEnv
  3046.  
  3047.    NAME   
  3048.        W3D_SetTexEnv -- Set texture environment parameters
  3049.  
  3050.    SYNOPSIS
  3051.        success = W3D_SetTexEnv(context, texture, envparam, envcolor);
  3052.        d0                      a0       a1       d1        a2
  3053.  
  3054.        ULONG W3D_SetTexEnv(W3D_Context *, W3D_Texture *, ULONG,
  3055.                W3D_Color *);
  3056.  
  3057.    FUNCTION
  3058.        This function is used to set the texture environment parameters.
  3059.        These parameters define how a texture is applied to a drawn
  3060.        primitive. This also involves lit-texturing, and unlit-texturing.
  3061.  
  3062.    INPUTS
  3063.        context     - a pointer to a W3D_Context (surprise !:)
  3064.        texture     - a pointer to the texture object to be modified
  3065.        envparam    - the environment parameter. One of the following:
  3066.                      W3D_REPLACE       Unlit texturing
  3067.                      W3D_DECAL         Lit texturing using the alpha component
  3068.                                        as blending value
  3069.                      W3D_MODULATE      Lit texturing by modulation of source
  3070.                                        and destination. Modulation means
  3071.                                        source and destination are multiplied.
  3072.                      W3D_BLEND         Blending with the color in envcolor.
  3073.        envcolor    - Only specified when envparam == W3D_BLEND. The
  3074.                      given color value is used for blending with the texture.
  3075.                      Must be NULL for all other envparams.
  3076.  
  3077.    RESULT
  3078.        A value indicating success or failure. Current values are:
  3079.            W3D_SUCCESS             (guess :)
  3080.            W3D_ILLEGALINPUT        Unknown envparam given
  3081.            W3D_UNSUPPORTEDTEXENV   Not supported by the current driver
  3082.            W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  3083.  
  3084.    EXAMPLE
  3085.  
  3086.    NOTES
  3087.         The texture environment is texture-specific by default. By enabling
  3088.         the W3D_GLOBALTEXENV state using W3D_SetState() the texture environment
  3089.         can be made global for all textures (this is the case in OpenGL,
  3090.         for example).
  3091.  
  3092.    BUGS
  3093.  
  3094.    SEE ALSO
  3095.        W3D_GetTexFmtInfo
  3096.  
  3097. Warp3D/W3D_SetWrapMode                                         Warp3D/W3D_SetWrapMode
  3098.  
  3099.    NAME   
  3100.        W3D_SetWrapMode -- Set the texture`s wrapping mode
  3101.  
  3102.    SYNOPSIS
  3103.        success = W3D_SetWrapMode(context, texture, mode_s, mode_t, border);
  3104.        d0                        a0        a1      d0      d1      a2
  3105.  
  3106.        ULONG W3D_SetWrapMode(W3D_Context *, W3D_Texture *, ULONG,
  3107.                ULONG, W3D_Color *);
  3108.  
  3109.    FUNCTION
  3110.        Sets the texture`s wrapping mode.
  3111.  
  3112.    INPUTS
  3113.        context     - A W3D_Context pointer
  3114.        texture     - The texture to be modified
  3115.        mode_s      - The wrapping in s direction (vertical). Can be one
  3116.                      of the following constants:
  3117.                      W3D_REPEAT    Texture is repeated
  3118.                      W3D_CLAMP     Texture is clamped, the border is filled
  3119.                                    with the color given in border.
  3120.        mode_t      - Wrapping in t direction (horizontal). Same as above.
  3121.        border      - A pointer to a W3D_Color used for the border (when clamping).
  3122.  
  3123.    RESULT
  3124.        A value indicating success or failure. One of the following:
  3125.            W3D_SUCCESS             - Success
  3126.            W3D_ILLEGALINPUT        - Illegal wrap mode
  3127.            W3D_UNSUPPORTEDWRAPMODE - The desired wrap mode is not supported
  3128.                                      by the current driver
  3129.  
  3130.    EXAMPLE
  3131.  
  3132.    NOTES
  3133.         The Virge does not allow asymmetric wrapping, therefore you should
  3134.         use the query facility, if asymmetric wrapping is possible.
  3135.  
  3136.         You should usually use W3D_REPEAT, since W3D_CLAMP is currently
  3137.         not possible with the Virge.
  3138.  
  3139.    BUGS
  3140.  
  3141.    SEE ALSO
  3142.        W3D_Query, W3D_GetTexFmtInfo
  3143.  
  3144. Warp3D/W3D_SetWriteMask                                       Warp3D/W3D_SetWriteMask
  3145.  
  3146.    NAME   
  3147.        W3D_SetWriteMask -- write protext bits in the stencil buffer
  3148.  
  3149.    SYNOPSIS
  3150.        success = W3D_SetWriteMask(context, mask);
  3151.        d0                         a0       d1
  3152.  
  3153.        ULONG W3D_SetWriteMask(W3D_Context *, ULONG);
  3154.  
  3155.    FUNCTION
  3156.        Defines which bits of the stencil buffer are write protected
  3157.  
  3158.    INPUTS
  3159.        context - context pointer
  3160.        mask    - a bitmask, indicationg which bits of the
  3161.                  stencil buffer should be write-protected.
  3162.                  Setting a bit to 1 allows write access,
  3163.                  while a 0 bit protects it from writing
  3164.  
  3165.    RESULT
  3166.        W3D_SUCCESS             success
  3167.        W3D_UNSOPPORTEDTEST     Not supported by current driver
  3168.        W3D_NOTVISIBLE          Indirect mode only. Locking failed.
  3169.  
  3170.    EXAMPLE
  3171.  
  3172.    NOTES
  3173.        Stencil buffering is only supported on newer hardware.
  3174.        Note that the stencil test has to be enabled using
  3175.        W3D_SetState.
  3176.  
  3177.    BUGS
  3178.  
  3179.    SEE ALSO
  3180.  
  3181. Warp3D/W3D_SetZCompareMode                                 Warp3D/W3D_SetZCompareMode
  3182.  
  3183.    NAME   
  3184.        W3D_SetZCompareMode -- Set the ZBuffer compare mode
  3185.  
  3186.    SYNOPSIS
  3187.        success = W3D_SetZCompareMode(context, mode);
  3188.        d0                            a0       d1
  3189.  
  3190.        ULONG W3D_SetZCompareMode(W3d_Context *, ULONG);
  3191.  
  3192.    FUNCTION
  3193.        Set the compare mode used by ZBuffering. This mode
  3194.        determines what will be drawn depending on the z coordinate
  3195.        of the primitive to be drawn, and the value currently
  3196.        in the ZBuffer. For more information on ZBuffering, see the
  3197.        OpenGL specs, or get a textbook about Computer Graphics.
  3198.  
  3199.    INPUTS
  3200.        context - A context pointer
  3201.        mode    - The ZBuffer compare mode. One of the following values:
  3202.                    W3D_Z_NEVER             Never pass, discard pixel
  3203.                    W3D_Z_LESS              Draw if z < zbuffer
  3204.                    W3D_Z_GEQUAL            Draw if z >= zbuffer
  3205.                    W3D_Z_LEQUAL            Draw if z <= zbuffer
  3206.                    W3D_Z_GREATER           Draw if z > zbuffer
  3207.                    W3D_Z_NOTEQUAL          Draw if z != zbuffer
  3208.                    W3D_Z_EQUAL             Draw if Z == zbuffer
  3209.                    W3D_Z_ALWAYS            Always draw
  3210.  
  3211.    RESULT
  3212.        One of the following values:
  3213.            W3D_SUCCESS         Operation successful
  3214.            W3D_ILLEGLAINPUT    Illegal compare mode
  3215.            W3D_UNSUPPORTEDZCMP Comparemode unsupported by current driver
  3216.            W3D_NOTVISIBLE      Indirect mode only. Locking failed.
  3217.  
  3218.    EXAMPLE
  3219.  
  3220.    NOTES
  3221.        W3D_Z_LESS is the "normal" behavior (i.e. depth cueing), while
  3222.        W3D_Z_NOTEQUAL can be used as a poor man's stencil buffering.
  3223.  
  3224.        When mixing software and hardware rendering (for example in OpenGL
  3225.        implementations, then you should be aware, that using some of
  3226.        the Z compare modes (i.e. W3D_Z_EQUAL, W3D_Z_NOTEQUAL) might not
  3227.        work correctly, since the results of the software engine might
  3228.        not be exactly the same as the results of the hardware engine.
  3229.  
  3230.  
  3231.    BUGS
  3232.  
  3233.    SEE ALSO
  3234.        W3D_ClearZBuffer
  3235.  
  3236. Warp3D/W3D_TestMode                                               Warp3D/W3D_TestMode
  3237.  
  3238.    NAME
  3239.        W3D_TestMode -- Test Mode and return driver (V2)
  3240.  
  3241.    SYNOPSIS
  3242.        driver = W3D_TestMode(modeid);
  3243.           D0                  D0
  3244.  
  3245.        W3D_Driver *W3D_TestMode(ULONG);
  3246.  
  3247.    FUNCTION
  3248.        Given a standard ModeID, this function tests if there is a
  3249.        driver available for this DisplayID. A hardware driver is
  3250.        preferred, although it will return a CPU driver (if found)
  3251.        in case none of the installed hardware drivers support this
  3252.        screenmode.
  3253.  
  3254.    INPUTS
  3255.        modeid  -   A standard AmigaOS DisplayID
  3256.  
  3257.    RESULT
  3258.        driver  -   A pointer to a suitable driver or NULL if
  3259.                    no matching or CPU driver found.
  3260.  
  3261.    EXAMPLE
  3262.  
  3263.    NOTES
  3264.        This function will also check if the CPU driver actually supports
  3265.        this format, so be prepared to check for a NULL return value.
  3266.  
  3267.    BUGS
  3268.  
  3269.    SEE ALSO
  3270.        W3D_GetDrivers
  3271.  
  3272. Warp3D/W3D_UnLockHardware                                   Warp3D/W3D_UnLockHardware
  3273.  
  3274.    NAME   
  3275.        W3D_UnLockHardware -- Release the exclusive hardware lock
  3276.  
  3277.    SYNOPSIS
  3278.        W3D_UnLockHardware(context);
  3279.                           a0
  3280.  
  3281.        void W3D_UnLockHardware(W3D_Context *);
  3282.  
  3283.    FUNCTION
  3284.        This function releases a hardware lock previously acquired
  3285.        with W3D_LockHardware.
  3286.  
  3287.    INPUTS
  3288.        context - a pointer to a W3D_Context
  3289.  
  3290.    RESULT
  3291.        None
  3292.  
  3293.    EXAMPLE
  3294.        if (W3D_SUCCESS == W3D_LockHardware(context) {
  3295.            ...
  3296.            Render some stuff
  3297.            ...
  3298.            W3D_UnLockHardware(context);
  3299.        } else {
  3300.            printf("Can`t lock hardware\n");
  3301.        }
  3302.  
  3303.    NOTES
  3304.  
  3305.    BUGS
  3306.  
  3307.    SEE ALSO
  3308.        W3D_LockHardware, W3D_GetState
  3309.  
  3310. Warp3D/W3D_UpdateTexImage                                   Warp3D/W3D_UpdateTexImage
  3311.  
  3312.    NAME   
  3313.        W3D_UpdateTexImage -- Change the image of a texture or mipmap
  3314.  
  3315.    SYNOPSIS
  3316.        success = W3D_UpdateTexImage(context, texture, teximage, level, palette);
  3317.        d0                           a0       a1       a2        d1     a3
  3318.  
  3319.        ULONG W3D_UpdateTexImage(W3D_Context *, W3D_Texture *, void *,
  3320.                ULONG, ULONG *);
  3321.  
  3322.    FUNCTION
  3323.        Change the image mipmap data to the given texture. The new source
  3324.        image must have dimensions and format equal to the old one. Also,
  3325.        mipmap mode must be the same (meaning that if the old texture had
  3326.        mipmaps, so must the new).
  3327.        The resident state is unaffected. If the texture is in video ram,
  3328.        the copy there will be replaced by the new image as soon as the
  3329.        texture is used again for rendering.
  3330.  
  3331.    INPUTS
  3332.        context     - a pointer to the current context
  3333.        texture     - a pointer to the texture to be modified
  3334.        teximage    - a pointer to the new image data
  3335.        level       - the texture level to be changed. 0 is the source image,
  3336.                      while levels != 0 are the mipmaps.
  3337.        palette     - a pointer to a palette, if needed. May be NULL, even if
  3338.                      the texture is chunky, in which case the old palette
  3339.                      will remain valid. See the note to the W3D_ATO_PALETTE
  3340.                      tag in W3D_AllocTexObject for some constraints on using
  3341.                      chunky textures on 8bit screens
  3342.  
  3343.    RESULT
  3344.        One of the following:
  3345.            W3D_SUCCESS     Success
  3346.            W3D_NOMEMORY    No memory left
  3347.            W3D_NOMIPMAPS   Mipmaps are not supported by this texture object
  3348.            W3D_NOTVISIBLE  (Indirect context only) Flushing failed due to failed
  3349.                            hardware locking
  3350.  
  3351.    EXAMPLE
  3352.  
  3353.    NOTES
  3354.         Update operations are expensive, when done very often, because of
  3355.         the bus bandwidth limitation. Be especially careful when using
  3356.         texture animations. On hardware with a lot of VRAM, it might be
  3357.         better to treat all frames of such an animation as separate
  3358.         textures, so that all (or most of them) might be in VRAM.
  3359.  
  3360.    BUGS
  3361.  
  3362.    SEE ALSO
  3363.        W3D_AllocTexObj
  3364.  
  3365. Warp3D/W3D_UpdateTexSubImage                             Warp3D/W3D_UpdateTexSubImage
  3366.  
  3367.    NAME
  3368.        W3D_UpdateTexSubImage -- Change part of a texture
  3369.  
  3370.    SYNOPSIS
  3371.        success = W3D_UpdateTexSubImage(context, texture, teximage, level,
  3372.        d0                              a0       a1       a2        d1
  3373.                         palette, scissor, srcbpr);
  3374.                         a3       a4       d0
  3375.  
  3376.        ULONG W3D_UpdateTexImage(W3D_Context *, W3D_Texture *, void *,
  3377.                ULONG, ULONG *, W3D_Scissor*, ULONG);
  3378.  
  3379.    FUNCTION
  3380.        Update only part of a texture, as defined by the scissor region.
  3381.        The image data is assumed to be as large as the scissor region.
  3382.        If it's larger, the srcbpr parameter can be used to define the number
  3383.        of bytes per source row. If teximage is non-zero, the contents is copied
  3384.        into the texture. It can also be set to NULL. In this case, you can alter
  3385.        the texture image yourself in the following way: The pointer supplied with
  3386.        W3D_AllocTexObj/W3D_UpdateTexImage points to your supplied image data. You
  3387.        are allowed to change this data, BUT you MUST call W3D_UpdateTexSubImage
  3388.        after changing BEFORE doing anything else. This call must not be used inside
  3389.        a W3D_LockHardware/W3D_UnLockHardware pair. The scissor is then
  3390.        considered a "damage region", and the area defined by it will be updated.
  3391.  
  3392.        This function also recreates mipmaps, also only restricted to the scissor
  3393.        region.
  3394.  
  3395.    INPUTS
  3396.        context     - a pointer to the current context
  3397.        texture     - a pointer to the texture to be modified
  3398.        teximage    - a pointer to the new image data. Note that this pointer
  3399.                      is only "temporary", it may be reused immediatly. This is
  3400.                      different from the W3D_UpdateTexImage call.
  3401.        level       - the texture level to be changed. 0 is the source image,
  3402.                      while levels != 0 are the mipmaps.
  3403.        palette     - a pointer to a palette, if needed. May be NULL, even if
  3404.                      the texture is chunky, in which case the old palette
  3405.                      will remain valid. See the note to the W3D_ATO_PALETTE
  3406.                      tag in W3D_AllocTexObject for some constraints on using
  3407.                      chunky textures on 8bit screens
  3408.        scissor     - The given image data will be transfered into this region.
  3409.        srcbpr      - Bytes per row in source image. May be set to zero to indicate
  3410.                      that image data ans scissor size match.
  3411.  
  3412.    RESULT
  3413.        One of the following:
  3414.            W3D_SUCCESS     Success
  3415.            W3D_NOMEMORY    No memory left
  3416.            W3D_NOMIPMAPS   Mipmaps are not supported by this texture object,
  3417.                            or no mipmaps have been created yet.
  3418.            W3D_NOTVISIBLE  (Indirect context only) Flushing failed due to failed
  3419.                            hardware locking
  3420.  
  3421.    EXAMPLE
  3422.  
  3423.    NOTES
  3424.         Update operations are expensive, when done very often, because of
  3425.         the bus bandwidth limitation. Be especially careful when using
  3426.         texture animations. On hardware with a lot of VRAM, it might be
  3427.         better to treat all frames of such an animation as separate
  3428.         textures, so that all (or most of them) might be in VRAM.
  3429.  
  3430.    BUGS
  3431.  
  3432.    SEE ALSO
  3433.        W3D_AllocTexObj, W3D_UpdateTexImage
  3434.  
  3435. Warp3D/W3D_UploadTexture                                     Warp3D/W3D_UploadTexture
  3436.  
  3437.    NAME   
  3438.        W3D_UploadTexture -- Transfer a texture to video ram
  3439.  
  3440.    SYNOPSIS
  3441.        success = W3D_UploadTexture(context, texture);
  3442.        d0                          a0       a1
  3443.  
  3444.        ULONG W3D_UploadTexture(W3D_Context *, W3D_Texture *);
  3445.  
  3446.    FUNCTION
  3447.        `Upload` a texture to video ram. Video memory is allocated and
  3448.        the texture image is copied there. The source texture stays in
  3449.        main memory.
  3450.  
  3451.    INPUTS
  3452.        context - a W3D_Context
  3453.        texture - the W3D_Texture to be transfered
  3454.  
  3455.    RESULT
  3456.        A value indication success or failure. One of the following:
  3457.            W3D_SUCCESS     It worked.
  3458.            W3D_NOGFXMEM    No video ram remaining.
  3459.  
  3460.    EXAMPLE
  3461.  
  3462.    NOTES
  3463.        This function does nothing when W3D_AUTOTEXMANAGEMENT is set
  3464.        in the current context`s state. Note also that transferring
  3465.        textures to video ram means transfer over the hardware`s bus
  3466.        system. Although newer cards like the CVPPC will have a PCI
  3467.        or similar bus, those bus system are still considered
  3468.        `bottlenecks`, and are usually much slower than main memory
  3469.        transfers. It is advised that you use automatic texture management,
  3470.        as this uses a LRU caching scheme. This was also used in
  3471.        ADescent, and gave about 99.7 % hit ratio.
  3472.  
  3473.    BUGS
  3474.  
  3475.    SEE ALSO
  3476.        W3D_ReleaseTexture, W3D_FlushTexture.
  3477.  
  3478. Warp3D/W3D_WaitIdle                                               Warp3D/W3D_WaitIdle
  3479.  
  3480.    NAME   
  3481.        W3D_WaitIdle -- Wait for the hardware to become idle
  3482.  
  3483.    SYNOPSIS
  3484.        W3D_WaitIdle(context);
  3485.                     a0
  3486.  
  3487.        void W3D_WaitIdle(W3D_Context *);
  3488.  
  3489.    FUNCTION
  3490.        This function waits for the hardware to finish it`s current
  3491.        operation. It blocks your program until then.
  3492.  
  3493.    INPUTS
  3494.        context - a pointer to W3D_Context
  3495.  
  3496.    RESULT
  3497.        None
  3498.  
  3499.    EXAMPLE
  3500.        W3D_DrawSomething(context);
  3501.        W3D_WaitIdle(context);
  3502.        printf("Hardware is free again\n");
  3503.  
  3504.    NOTES
  3505.        You should use this function instead of W3D_CheckIdle if you
  3506.        just want to wait for the hardware. This function may use
  3507.        signals and/or interrupts for waiting, letting the CPU take care
  3508.        of other tasks while waiting
  3509.  
  3510.        Usually you won't need to call this function, since W3D takes care,
  3511.        that any drawing operation is only done, if the hardware is
  3512.        ready to get a new job.
  3513.  
  3514.    BUGS
  3515.  
  3516.    SEE ALSO
  3517.        W3D_CheckIdle
  3518.  
  3519. Warp3D/W3D_WriteStencilPixel                             Warp3D/W3D_WriteStencilPixel
  3520.  
  3521.    NAME   
  3522.        W3D_WriteStencilPixel -- Write a pixel into the stencil buffer
  3523.  
  3524.    SYNOPSIS
  3525.        res = W3D_WriteStencilBuffer(context, x, y, st);
  3526.        d0                           a0       d0 d1 d2
  3527.  
  3528.        ULONG W3D_WriteStencilBuffer(W3D_Context *, ULONG, ULONG, ULONG);
  3529.  
  3530.    FUNCTION
  3531.        This function writes the pixel st into the stencil buffer of context,
  3532.        at position x,y.
  3533.        This function may only be used while the hardware is locked,
  3534.        except when indirect drawing is used.
  3535.  
  3536.    INPUTS
  3537.        context - a context pointer
  3538.        x,y     - position to write to
  3539.        st      - the pixel value
  3540.  
  3541.    RESULT
  3542.        A constant indicating success or failure. One of the following:
  3543.            W3D_SUCCESS             Success
  3544.            W3D_NOSTENCILBUFFER     Stencil buffering not supported by
  3545.                                      current driver
  3546.            W3D_NOTVISIBLE          The stencil buffer can not be accessed by
  3547.                                        the hardware
  3548.  
  3549.    EXAMPLE
  3550.  
  3551.    NOTES
  3552.        Stencil buffering is not supported on older hardware.
  3553.  
  3554.        This function is primarly intended for OpenGL implementations,
  3555.        which might need access to the stencil buffer. This function
  3556.        is slow and should normally not be called.
  3557.  
  3558.        Important note: In indirect mode you have to make sure, that
  3559.        the stencil buffer is up to date, no Flush is internally done
  3560.        by this function. You have to call W3D_Flush, if the stencil
  3561.        buffer is not up to date yet.
  3562.  
  3563.    BUGS
  3564.        Indirect mode: the hardware is internally not locked for
  3565.        performance reasons, therefore the result might be wrong, if
  3566.        the corresponding buffer is swapped out.
  3567.  
  3568.    SEE ALSO
  3569.        W3D_AllocStencilBuffer
  3570.  
  3571. Warp3D/W3D_WriteStencilSpan                               Warp3D/W3D_WriteStencilSpan
  3572.  
  3573.    NAME   
  3574.        W3D_WriteStencilSpan -- Write a span of stencil pixels
  3575.  
  3576.    SYNOPSIS
  3577.        success = W3D_WriteStencilSpan(context, x, y, n, st, mask);
  3578.        d0                             a0       d0 d1 d2 a1  a2
  3579.  
  3580.        ULONG W3D_WriteStencilSpan(W3D_Context *, ULONG, ULONG, ULONG,
  3581.                        ULONG [], UBYTE []);
  3582.  
  3583.    FUNCTION
  3584.        Write a span of n stencil pixels into the stencil buffer, starting
  3585.        at x,y. Pixels are taken from st. The mask array is used to skip pixels:
  3586.        If a byte is set to 0, the corresponding pixel is not written.
  3587.        This function may only be used while the hardware is locked,
  3588.        except when indirect drawing is used.
  3589.  
  3590.    INPUTS
  3591.        context - a context pointer
  3592.        x,y     - starting coordinates
  3593.        n       - number of pixels
  3594.        st      - array of stencil pixels
  3595.        mask    - mask array. May be NULL
  3596.  
  3597.    RESULT
  3598.        A constant indicating success or failure. One of the following:
  3599.            W3D_SUCCESS             Success
  3600.            W3D_NOSTENCILBUFFER     Stencil buffering not supported by
  3601.                                      current driver
  3602.            W3D_NOTVISIBLE          The stencil buffer can not be accessed by
  3603.                                        the hardware
  3604.  
  3605.    EXAMPLE
  3606.  
  3607.    NOTES
  3608.        Stencil buffering is not supported on older hardware.
  3609.  
  3610.        This function is primarly intended for OpenGL implementations,
  3611.        which might need access to the stencil buffer. This function
  3612.        is slow and should normally not be called.
  3613.  
  3614.        Important note: In indirect mode you have to make sure, that
  3615.        the stencil buffer is up to date, no Flush is internally done
  3616.        by this function. You have to call W3D_Flush, if the stencil
  3617.        buffer is not up to date yet.
  3618.  
  3619.    BUGS
  3620.        Indirect mode: the hardware is internally not locked for
  3621.        performance reasons, therefore the result might be wrong, if
  3622.        the corresponding buffer is swapped out.
  3623.  
  3624.    SEE ALSO
  3625.  
  3626. Warp3D/W3D_WriteZPixel                                         Warp3D/W3D_WriteZPixel
  3627.  
  3628.    NAME   
  3629.        W3D_WriteZPixel -- Write a pixel into the ZBuffer
  3630.  
  3631.    SYNOPSIS
  3632.        success = W3D_WriteZPixel(context, x, y, z);
  3633.        d0                        a0       d0 d1 a1
  3634.  
  3635.        ULONG W3D_WriteZBuffer(W3D_Context *, ULONG, ULONG, W3D_Double *);
  3636.  
  3637.    FUNCTION
  3638.        Write  ZBuffer pixel z into context's ZBuffer, at x,y.
  3639.        This function may only be used while the hardware is locked,
  3640.        except when indirect drawing is used.
  3641.  
  3642.    INPUTS
  3643.        context - The context
  3644.        x,y     - Coordinates of the pixel
  3645.        z       - Pointer to a W3D_Double that's put into the zbuffer
  3646.  
  3647.    RESULT
  3648.  
  3649.    EXAMPLE
  3650.  
  3651.    NOTES
  3652.        This function is primarly intended for OpenGL implementations,
  3653.        which might need access to the Z buffer. This function
  3654.        is slow and should normally not be called.
  3655.  
  3656.        * IMPORTANT NOTE: *
  3657.        For speed reasons, this call is *NOT* compatible with indirect drawing.
  3658.        To use this call with indirect mode, you have to manually W3D_Flush,
  3659.        and, should you use any drawing calls, you'll have to W3D_Flush again.
  3660.  
  3661.    BUGS
  3662.        Indirect mode: the hardware is internally not locked for
  3663.        performance reasons, therefore the result might be wrong, if
  3664.        the corresponding buffer is swapped out.
  3665.  
  3666.    SEE ALSO
  3667.  
  3668. Warp3D/W3D_WriteZSpan                                           Warp3D/W3D_WriteZSpan
  3669.  
  3670.    NAME   
  3671.        W3D_WriteZSpan -- Write a span of z pixels
  3672.  
  3673.    SYNOPSIS
  3674.        W3D_WriteZSpan(context, x, y, n, z, mask);
  3675.                       a0       d0 d1 d2 a1 a2
  3676.  
  3677.        W3D_WriteZSpan(W3D_Context *, ULONG, ULONG, ULONG,
  3678.                    W3D_Double [], UBYTE []);
  3679.  
  3680.    FUNCTION
  3681.        Write a span of pixels pointed to by z into the zbuffer.
  3682.        Writing begins at x,y, n pixels will be drawn. mask points
  3683.        to an equally sized array of UBYTES. A 0 in the array indicates
  3684.        that the corresponding z pixel will not be drawn.
  3685.        This function may only be used while the hardware is locked,
  3686.        except when indirect drawing is used.
  3687.  
  3688.    INPUTS
  3689.        context - a context pointer
  3690.        x,y     - the starting position
  3691.        n       - number of pixels
  3692.        z       - pointer to a span of zpixels
  3693.        mask    - pointer to mask array. May be NULL
  3694.  
  3695.    RESULT
  3696.  
  3697.    EXAMPLE
  3698.  
  3699.    NOTES
  3700.        This function is primarly intended for OpenGL implementations,
  3701.        which might need access to the Z buffer. This function
  3702.        is slow and should normally not be called.
  3703.  
  3704.        * IMPORTANT NOTE: *
  3705.        For speed reasons, this call is *NOT* compatible with indirect drawing.
  3706.        To use this call with indirect mode, you have to manually W3D_Flush,
  3707.        and, should you use any drawing calls, you'll have to W3D_Flush again.
  3708.  
  3709.    BUGS
  3710.        Indirect mode: the hardware is internally not locked for
  3711.        performance reasons, therefore the result might be wrong, if
  3712.        the corresponding buffer is swapped out.
  3713.  
  3714.    SEE ALSO
  3715.  
  3716.